자바에서는 if-else 또는 switch-case 문으로 조건문을 작성할 수 있다.
Kotlin에서 if 문은 when으로 치환할 수 있다.
when은 Java의 switch와 비슷하지만 조금 더 강력한 조건들을 지정할 수 있다. (범위 지정, 값 비교, 식 사용 등)
또한 중요한 점은 Kotlin에서의 조건문(when, if)은 식(Expression)으로 치환될 수 있다는 점이다. 즉, 조건문의 결과값을 변수에 바로 대입할 수 있다.
fun main() {
var i = 5
var result = if (i > 10) { // 조건문 통과 후 바로 result로 대입
"10 보다 크다"
} else if (i > 5) {
"5보다 크다"
} else {
"5다."
}
print(result) // "5다." 가 출력된다.
}
// when으로 바꾼다면 다음과 같은 식이 된다.
fun main() {
var i = 5
var result = when { // 조건문 통과 후 바로 result로 대입
i > 10 -> {
"10 보다 크다"
}
i > 5 -> {
"5보다 크다"
}
else -> {
"5다."
}
}
print(result) // "5다." 가 출력된다.
}
자바에서는 보통 다음과 같이 사용된다.
boolean result = i > 10 ? true : false;
Kotlin에는 별도의 삼항 연산자가 없다.
대신 if를 식 그대로 적어주면 삼항 연산과 동일한 결과를 확인할 수 있다.
var result = if (i > 10) true else false
반복문은 보통 리스트(List) 같은 자료형을 순회할 때 자주 사용된다.
Kotlin은 for in 형태를 사용하며, Java의 향상된 for문이나 Python과 유사한 형태라 직관적이다.
fun main() {
val numbers = listOf(1, 2, 3, 4, 5)
// 1. 리스트 전체 순환
for (item in numbers) {
print(item)
}
// 2. 특정 범위 지정 (.. 사용 시 마지막 숫자 포함: 0123)
for (i in 0..3) {
print(i)
}
// 3. 리스트 크기만큼 반복 (until 사용 시 마지막 미포함: 01234)
// 0..numbers.size-1 와 동일하게 작동한다.
for (i in 0 until numbers.size) {
print(i)
}
// 4. 건너뛰며 반복 (step 사용)
for (i in 0..10 step 2) {
print(i) // 0, 2, 4, 6, 8, 10 출력
}
}
함수형 스타일의 forEach 역시 가능하다.
fun main() {
val numbers = listOf(1, 2, 3, 4, 5)
// 일반적인 형태
numbers.forEach { item ->
print(item)
}
// 더 간결하게 it 키워드 사용 (파라미터가 하나일 때 생략 가능)
numbers.forEach { print(it) }
}
Java와 완벽하게 동일한 형태로 사용 가능하다.
break, continue 둘 다 가능하므로 기존에 알고 있는 형태로 사용하자.