백고등어 개발 블로그
코틀린 강의 3강: 연산자와 제어문 본문
728x90
반응형
3강: 연산자와 제어문
연산자
코틀린의 연산자는 자바와 유사하지만, 몇 가지 편리한 기능이 추가되었습니다.
산술 연산자
val a = 10
val b = 3
println(a + b) // 13 (덧셈)
println(a - b) // 7 (뺄셈)
println(a * b) // 30 (곱셈)
println(a / b) // 3 (나눗셈)
println(a % b) // 1 (나머지)
증감 연산자
var count = 10
count++ // 후위 증가: 11
++count // 전위 증가: 12
count-- // 후위 감소: 11
--count // 전위 감소: 10
비교 연산자
val x = 5
val y = 10
println(x == y) // false (같음)
println(x != y) // true (같지 않음)
println(x > y) // false (크다)
println(x < y) // true (작다)
println(x >= y) // false (크거나 같다)
println(x <= y) // true (작거나 같다)
논리 연산자
val isAdult = true
val hasLicense = false
println(isAdult && hasLicense) // false (AND)
println(isAdult || hasLicense) // true (OR)
println(!isAdult) // false (NOT)
in 연산자
코틀린의 in 연산자는 범위나 컬렉션에 값이 포함되어 있는지 확인합니다:
val age = 25
println(age in 20..30) // true (20 이상 30 이하)
val name = "Kotlin"
println('K' in name) // true
val numbers = listOf(1, 2, 3, 4, 5)
println(3 in numbers) // true
범위 연산자
val range1 = 1..10 // 1부터 10까지 (10 포함)
val range2 = 1 until 10 // 1부터 9까지 (10 미포함)
val range3 = 10 downTo 1 // 10부터 1까지 역순
val range4 = 1..10 step 2 // 1, 3, 5, 7, 9 (2씩 증가)
if 표현식
코틀린의 if는 문(statement)이 아닌 표현식(expression)입니다. 즉, 값을 반환할 수 있습니다.
기본 사용법
val age = 20
if (age >= 18) {
println("성인입니다")
} else {
println("미성년자입니다")
}
if를 표현식으로 사용
val age = 20
val message = if (age >= 18) "성인" else "미성년자"
println(message) // 출력: 성인
// 여러 줄의 코드도 가능 (마지막 값이 반환됨)
val result = if (age >= 18) {
println("성인 확인 중...")
"성인"
} else {
println("미성년자 확인 중...")
"미성년자"
}
삼항 연산자가 없는 이유
코틀린에는 자바의 삼항 연산자(? :)가 없습니다. if 표현식으로 충분히 대체할 수 있기 때문입니다:
// 자바: String result = (age >= 18) ? "성인" : "미성년자";
// 코틀린:
val result = if (age >= 18) "성인" else "미성년자"
when 표현식
when은 자바의 switch문을 대체하는 강력한 표현식입니다. 훨씬 더 유연하고 표현력이 뛰어납니다.
기본 사용법
val day = 3
when (day) {
1 -> println("월요일")
2 -> println("화요일")
3 -> println("수요일")
4 -> println("목요일")
5 -> println("금요일")
6, 7 -> println("주말") // 여러 값 매칭
else -> println("잘못된 입력")
}
when을 표현식으로 사용
val dayName = when (day) {
1 -> "월요일"
2 -> "화요일"
3 -> "수요일"
4 -> "목요일"
5 -> "금요일"
6, 7 -> "주말"
else -> "알 수 없음"
}
조건식 사용
val score = 85
val grade = when {
score >= 90 -> "A"
score >= 80 -> "B"
score >= 70 -> "C"
score >= 60 -> "D"
else -> "F"
}
println("학점: $grade") // 출력: 학점: B
범위와 컬렉션 검사
val age = 25
when (age) {
in 0..12 -> println("어린이")
in 13..19 -> println("청소년")
in 20..64 -> println("성인")
else -> println("노인")
}
val x = 5
when (x) {
in listOf(1, 3, 5, 7, 9) -> println("홀수")
in listOf(2, 4, 6, 8, 10) -> println("짝수")
}
is를 사용한 타입 검사
fun describe(obj: Any): String = when (obj) {
1 -> "숫자 1"
"Hello" -> "인사말"
is Long -> "Long 타입"
is String -> "문자열: 길이는 ${obj.length}"
else -> "알 수 없는 타입"
}
for 루프
범위를 이용한 반복
// 1부터 5까지 반복
for (i in 1..5) {
println(i) // 1, 2, 3, 4, 5
}
// 1부터 10까지 2씩 증가
for (i in 1..10 step 2) {
println(i) // 1, 3, 5, 7, 9
}
// 10부터 1까지 역순
for (i in 10 downTo 1) {
println(i)
}
// 인덱스 포함 없이 반복 (until 사용)
for (i in 0 until 5) {
println(i) // 0, 1, 2, 3, 4
}
컬렉션 반복
val fruits = listOf("사과", "바나나", "오렌지")
for (fruit in fruits) {
println(fruit)
}
// 인덱스와 함께 반복
for ((index, fruit) in fruits.withIndex()) {
println("$index: $fruit")
}
while 루프
var count = 0
while (count < 5) {
println(count)
count++
}
// do-while: 최소 한 번은 실행
var input: String
do {
print("종료하려면 'quit' 입력: ")
input = readLine() ?: ""
} while (input != "quit")
break와 continue
// break: 루프 종료
for (i in 1..10) {
if (i == 5) break
println(i) // 1, 2, 3, 4
}
// continue: 현재 반복 건너뛰기
for (i in 1..5) {
if (i == 3) continue
println(i) // 1, 2, 4, 5
}
레이블을 사용한 break/continue
중첩 루프에서 외부 루프를 제어할 수 있습니다:
outer@ for (i in 1..3) {
for (j in 1..3) {
if (i == 2 && j == 2) break@outer
println("$i, $j")
}
}
마치며
이번 강의에서는 코틀린의 연산자와 제어문에 대해 알아보았습니다. 특히 if와 when을 표현식으로 사용할 수 있다는 점, when이 자바의 switch보다 훨씬 강력하다는 점을 기억하세요. 다음 강의에서는 함수와 람다 표현식에 대해 알아보겠습니다.
728x90
반응형
'코틀린 강의' 카테고리의 다른 글
| 코틀린 강의 6강: 컬렉션 (0) | 2025.10.28 |
|---|---|
| 코틀린 강의 5강: 클래스와 객체 (0) | 2025.10.28 |
| 코틀린 강의 4강: 함수와 람다 표현식 (0) | 2025.10.28 |
| 코틀린 강의 2강: 변수와 자료형 (0) | 2025.10.28 |
| 코틀린 강의 1강: 코틀린 소개 및 개발 환경 설정 (0) | 2025.10.28 |