Notice
														
												
											
												
												
													Recent Posts
													
											
												
												
													Link
													
											
									
													Tags
													
											
												
												- string
 - SSL
 - java
 - spring
 - 1차원 배열
 - join
 - static
 - sql
 - springboot
 - select
 - jpa
 - spring mvc
 - Django
 - 스프링부트
 - PYTHON
 - nginx
 - ORM
 - 자바
 - 문자열
 - hibernate
 - spring boot
 - DI
 - 스프링
 - 데이터베이스
 - spring security 6
 - @transactional
 - 프로그래머스
 - AWS
 - mysql
 - Docker
 
| 일 | 월 | 화 | 수 | 목 | 금 | 토 | 
|---|---|---|---|---|---|---|
| 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 | 
													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 true")  // 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`문은 동일한 의미이다. (swtich-case문 같기도...)
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