Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
Tags
- 항해15기
- java set 출력
- java참조자료형
- 작은수제거하기
- 프로그래머스
- 격파르타장점
- sqld자격증합격
- 격파르타비전공자
- 인터프린터언어
- 격파르타합격후기
- java map 저장
- java list 저장
- 코딩부트캠프후기
- java map 출력
- java알고리즘
- 격파르타후기
- javaJVM
- 항해99후기
- 컴파일
- java기본자료형
- java알고리즘문제풀이
- java map
- 노베이스부트캠프
- 프로그래머스제일작은수
- java 자료구조 활용
- javaJRE
- java set 저장
- java list 출력
- java최솟값구하기
- 비전공자sqld
Archives
- Today
- Total
코딩과 결혼합니다
[Kotlin] 개념과 기초 문법 본문
728x90
Kotlin?
2011년 JetBrains에서 공개한 JVM에서 동작하는 정적 타입의 프로그래밍 언어로, 간결하고 실용적이며 자바코드와 상호운용성을 중시한 언어이다. 안드로이드 애플리케이션 개발에 널리 사용되고 있다.
Java언어와의 차이점
- 코틀린의 문법이 더 간결하고 표현력이 뛰어나 가독성과 생산성을 높일 수 있다.
- 코틀린은 자바와의 상호 운용성이 뛰어나 기존에 자바로 작성된 코드를 마이그레이션 하는 것이 비교적 쉽고 원활히 이루어진다.
- 코틀린은 안드로이드 애플리케이션 개발에 많이 사용된다. 구글의 안드로이드 공식 언어로 채택되었다.
- 코틀린은 비교적 새로운 언어이기 때문에 자바에 비해 학습 곡선이 높을 수 있다. 하지만, 자바와의 유사성으로 자바 개발자들이 쉽게 코틀린으로 전환할 수 있다.
정적 타입 언어
- 변수의 타입을 컴파일 시점에 결정하고, 컴파일러가 타입 체크를 수행하여 타입에 관련된 오류를 미리 잡을 수 있다.
타입 추론
- ✔️ 코틀린은 타입 추론으로 변수에 들어오는 값을 보고 타입을 알아서 지정해 주는 기능이 있다.
- 👓 하지만 여러 명이 같이 작업을 할 때에는 직접 Type을 명시하는 것이 좋다. (혼동 또는 가독성 떨어짐 방지)
nullable type
- null이 될 수 있는 타입을 지원
- 컴파일 시점에 null point exception이 발생할 수 있는지 여부를 검사할 수 있다.
함수형 프로그래밍
- 함수를 일반 값처럼 다룰 수 있다.
- 일단 만들어지고 나면 내부 상태가 절대로 바뀌지 않는 불변 객체를 사용하여 프로그램을 작성한다.
- 입력이 같으면 항상 같은 출력을 내놓고 다른 객체의 상태를 변경하지 않으며, 함수 외부나 다른 바깥 환경과 상호작용하지 않는 순수 함수를 사용한다.
코틀린 코드를 설치 없이 실행해 볼 수 있는 사이트
▪️Kotlin Playgound
Kotlin Playground: Edit, Run, Share Kotlin Code Online
play.kotlinlang.org
var / val
fun main(){
var a = 1
a = 2
print(a)
} O
fun main(){
val a = 1
a = 2
print(a)
} X
var - 읽기 쓰기가 가능한 변수 선언
val - 읽기만 가능한 변수 선언, 한번 초기화하면 변경이 불가능
fun main() {
val a = 1
print(a::class)
}
int (Kotlin reflection is not available)
현재의 클래스를 확인
? / ?. / ?: / !!
fun main() {
val Str : Stging? = null
}
? - null이 들어올 수 있음을 명시
fun main() {
val str: String? = "abc"
println(str?.length)
}
?. - Null Safe Call Operator, 이 물음표 앞에 있는 str이 Null이 아니라면 뒤에 있는 명령어를 이어서 실행.
Null이 들어가 있으면 그래도 Null을 출력
fun main() {
val str: String? = "abc"
println(str!!.length)
}
!! - 실제로 null이 들어갈 수 있는 변수이기는 하지만 null이 아니라는 것을 보장.
Null이 들어가 있으면 Ponit Excption 발생
fun main() {
val str: String? = null
str ?: println("str is null")
}
?: - str이 null이라면 뒤에 있는 명령어를 실행. null이 아니면 아무것도 실행되지 않는다.
if / when
▪️대소비교
fun main() {
val a: Int = 100
val b: Int = 200
if(a >= b){
println("a")
} else {
println("b")
}
}
fun main() {
val a: Int = 100
val b: Int = 200
val c: Int
c = if(a >= b){
a
} else {
b
}
println(c)
}
▪️null 체크
fun main() {
val a: Int? = 200
if(a == null){
println("null check true")
} else {
println("a = $a")
}
}
▪️In 체크
fun main() {
val a: Int? = 100
if(a in arrayOf(100, 200, 300)){
println("contain")
} else {
println("not contained")
}
}
▪️if 문을 when문으로 바꾸기
fun main() {
val a: Int? = 300
if (a == 100){
println("1")
} else if (a == 200){
println("2")
} else if (a == 300){
println("3")
} else {
println("not contained")
}
}
fun main() {
val a: Int? = 300
when (a) {
100 -> print("1")
200 -> print("2")
300 -> print("3")
else -> print("not contained")
}
}
▪️범위지정
fun main() {
val a: Int? = 318
when (a) {
in 100..199 -> print("1")
in 200..299 -> print("2")
in 300..399 -> print("3")
else -> print("not contained")
}
}
class / date class / enum class
fun main() {
val item: Item = Item("Book", 10_000)
println("Item name is ${item.name}, price is ${item.price}")
}
class Item(val name: String, val price: Int)
data class Item2(val name: String, val price: Int)
enum class Color{
RED,
GREEN,
BLUE,
}
- class와 data class의 차이점
- data class로 만들면 기본적으로 Getter, Setter, Equal, HashCode, ToString, Copy, Component, and 함수들이 생성된다.
- Setter의 경우 var로 선언해야 만들어진다.
'2세 > Spring' 카테고리의 다른 글
스프링 입문 : 라이브러리 살펴보기 (0) | 2024.02.03 |
---|---|
[Kotlin] 프로젝트 생성과 환경설정 (1) | 2024.01.20 |
230816 - Controller에서 JPA Entity를 반환하면 안되는 이유 (0) | 2023.08.17 |
230727 - @Transactional 을 사용하는 이유 (0) | 2023.07.27 |
230726 - Spring Transaction (0) | 2023.07.26 |