// if문 표현식 (Expression)val result = if (data > 0) { println("data > 0") true // 참일 때 반환값} else { // 표현식 else 필수 println("data <= 0") false // 거짓일 때 반환값}
4.2. when
타 언어의 switch문과 유사하나 훨씬 강력함
정수뿐만 아니라 다양한 타입의 데이터를 조건으로 지정 가능
when (data) { 10 -> println("data is 10") 20 -> println("data is 20") else -> println("data is not valid")}
문자열, 범위, 타입 등 다양한 조건 사용 가능
in: 범위 지정 연산자 (..은 끝 값 포함)
is: 타입 확인 연산자
when (data) { 20, 30 -> println("data is 20 or 30") in 1..10 -> println("data is 1..10") is String -> println("data is String") else -> println("data is not valid")}
(1) 표현식
val result = when { data <= 0 -> "data is <= 0" data > 100 -> "data is > 100" else -> "data is valid" // 표현식으로 사용 시 else 생략 불가}
5. 반복문
5.1. for
for (i in 1..10) { ... } // 1 ~ 10 (1씩 증가)for (i in 1 until 10) { ... } // 1 ~ 9 (10 미포함)for (i in 2..10 step 2) { ... } // 2, 4, 6, 8, 10for (i in 10 downTo 1) { ... } // 10 ~ 1 (1씩 감소)
(1) 컬렉션과 반복문
// indices 사용for (i in data.indices) { // 배열/컬렉션의 인덱스 값을 가져옴 print(data[i])}// withIndex() 사용 (인덱스 + 값)for ((index, value) in data.withIndex()) { // 인덱스와 실제 데이터(값)를 함께 가져옴 print(value)}
연산자
비교 내용
특징
==
값 (내용)
코틀린의 표준 비교 방식, null-safe
===
주소 (참조)
메모리상 같은 객체인지 확인
.equals()
값 (내용)
객체 비교 메서드 (직접 호출은 지양)
fun main() { val a = String("hello") val b = String("hello") val c = a // 1. == (값 비교) println(a == b) // true (내용이 같음) // 2. === (참조 비교) println(a === b) // false (서로 다른 객체 인스턴스임) println(a === c) // true (같은 객체를 참조함)}
5.2. while
while (x < 10) { // 조건이 참일 때 블록을 반복 실행 // (기존 언어와 동일) sum1 += ++x}