Notice
Recent Posts
Link
Tags
- jpa
- 자바
- PYTHON
- 문자열
- spring
- 데이터베이스
- Docker
- SSL
- Django
- ORM
- sql
- AWS
- DI
- select
- mysql
- join
- 프로그래머스
- hibernate
- java
- springboot
- spring mvc
- 스프링부트
- string
- nginx
- @transactional
- 스프링
- spring security 6
- 1차원 배열
- static
- spring boot
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Archives
개발하는 자몽
[Kotlin] 기본 문법 2 본문
if
코틀린의 `if`문은 표현식(expression)으로, 아래와 같은 방식으로 변수에 값으로 할당될 수 있다.
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? = null
if (a == null) {
println("null check ture") // print
} else {
println("a = $a") // a에 null이 아닌 값이 담긴 경우, a에 할당된 값이 출력됨. ex) a = 100
}
}
in
`in` 연산자를 사용하여 변수에 할당된 값이 주어진 범위에 속하는지 알 수 있다.
fun main() {
val a: Int? = 100
if (a in arrayOf(100, 200, 300)) {
println("contained") // print
} else {
println("not contained") // a에 할당된 값이 배열에 없는 값이면, not contained 가 출력된다.
}
}
when
다음 `if-else`문과 `when`문은 동일한 의미이다.
fun main() {
val a: Int? = 100
when (a) {
100 -> println("1") // print
200 -> println("2")
300 -> println("3")
else -> println("4")
}
if (a == 100) {
println("1") // print
} else if (a == 200) {
println("2")
} else if (a == 300) {
println("3")
} else {
println("4")
}
}
또한 `when`문에서 범위를 지정할 수 있다.
fun main() {
val a: Int = 399
when (a) {
in 100..199 -> println("1") // 100 <= a <= 199
in 200..299 -> println("2") // 200 <= a <= 299
in 300..399 -> println("3") // 300 <= a <= 399
else -> println("4")
}
// 399가 출력됨
}
참고로 nullable 한 변수를 대상으로 실행하면 다음과 같은 에러가 발생한다.
Incompatible types 'kotlin.Int?' and 'kotlin.ranges.IntRange'.
Class / Data class / Enum class
fun main() {
val item1: Item1 = Item1("BOOK", 10_000) // Item1 클래스의 인스턴스 생성
println("Item1 name is ${item1.name}, price is ${item1.price}")
println(item1)
val item2: Item2 = Item2("BOOK", 10_000) // Item2 데이터 클래스의 인스턴스 생성
println("Item2 name is ${item1.name}, price is ${item1.price}")
println(item2)
}
// 기본적으로 생성자가 생성됨
class Item1(val name: String, val price: Int)
// 기본적으로 getter, setter, Equal, hashCode, toString, Copy, Component, and 함수들이 생성됨
data class Item2(val name: String, val price: Int)
enum class Color {
RED,
GREEN,
BLUE,
}
# 위 코드 실행 결과
Item1 name is BOOK, price is 10000
Item1@133314b
Item2 name is BOOK, price is 10000
Item2(name=BOOK, price=10000)
Data class
- 코틀린의 `Data class`는 자바의 `Record`와 유사하게 사용할 수 있는 듯하다. → Ex. `DTO` 역할
- 위와같이 `Data class`를 정의하고 변수를 var로 선언하면 `setter`가 자동으로 생성된다.
- `val`로 선언한 경우, 특성상 변수를 변경할 수 없기 때문에 `setter`가 생성되지 않는다.
- 실행결과를 보면 `Data class`는 클래스 정의 시 `toString`이 자동 생성되므로, 출력했을 때 초기화한 인스턴스 값이 나오는 것을 확인할 수 있다.
'Java & Kotlin' 카테고리의 다른 글
[Kotlin] 기본 문법 1 (0) | 2025.01.18 |
---|---|
[Java Error] Caused by: java.lang.IllegalArgumentException at PropertyPlaceholderHelper.java:180 (1) | 2024.11.23 |
Java/Spring 테스트 - 2 (0) | 2024.11.04 |
Java/Spring 테스트 - 1 (2) | 2024.10.02 |
[Gradle] gradle build와 gradle bootJar의 차이 (0) | 2024.09.06 |
Comments