- Kotlin에서 조건에 따라 코드의 실행 흐름을 제어하는 기본적인 구문입니다. - Kotlin의 if 문은 다른 언어와 달리 표현식으로 사용될 수 있어, 값을 반환할 수 있는 특징이 있습니다.
특징
설명
조건부 실행
조건에 따라 코드 블록을 실행합니다.
표현식으로 사용
표현식으로 사용되어 값을 반환할 수 있습니다.
다중 조건 처리
else if와 else를 사용하여 여러 조건을 처리할 수 있습니다.
다중 라인 코드 실행
중괄호 {}를 사용하여 여러 줄의 코드를 실행할 수 있습니다.
💡 if문 기본구조
구성 요소
설명
if (조건)
주요 조건을 검사합니다. 이 조건이 참이면 해당 블록의 코드가 실행됩니다.
else if (다른 조건)
추가적인 조건을 검사합니다. 이전 조건들이 거짓이고 이 조건이 참일 때 실행됩니다.
else
모든 이전 조건이 거짓일 때 실행되는 기본 블록입니다.
{ }
각 조건에 대한 코드 블록을 정의합니다. 여러 줄의 코드를 포함할 수 있습니다.
if (조건) {
// 조건이 참일 때 실행되는 코드
} else if (다른 조건) {
// 다른 조건이 참일 때 실행되는 코드
} else {
// 모든 조건이 거짓일 때 실행되는 코드
}
💡 if문 사용예시
1. 반환 값이 없는 경우: 단순히 조건에 따라 다른 메시지를 출력합니다.
2. 반환 값이 있는 간단한 경우: 조건에 따라 "양수", "음수", "0"을 반환합니다.
3. 반환 값이 있는 복잡한 경우: 조건에 따라 메시지를 출력하고 a 또는 b 값을 반환합니다.
fun conditionIfExp(x: Int, y: Int a: Int, b: Int) {
// 사용예시 -1 : 반환 값이 존재하지 않는 경우
if (a > b) {
println("a가 b보다 큽니다")
} else {
println("a가 b보다 크지 않습니다")
}
// 사용예시 -2 : 반환 값이 존재하는 경우 1
val result = if (x > 0) "양수" else if (x < 0) "음수" else "0"
// 사용예시 -3 : 반환 값이 존재하는 경우 2
val max = if (a > b) {
println("a is larger")
a
} else {
println("b is larger")
b
}
// 사용예시 -4 : 삼항연산자를 사용하기
// val resultVal1 = x > y ? a : b // X 사용불가
val resultVal2 = if (x > y) a else b
}
[ 더 알아보기 ] 💡 Kotlin에서 삼항연산자도 지원하는 건가?
- Kotlin에서는 전통적인 삼항 연산자 (condition ? ifTrue : ifFalse)를 지원하지 않습니다. - 대신, if-else 표현식을 사용하여 동일한 기능을 구현할 수 있습니다. - 아래와 같이 삼항연산자를 사용하면 오류가 발생하기에 if ~ else 표현식을 통해서 구현하면 됩니다.
- Kotlin에서 조건에 따라 코드의 실행 흐름을 제어하는 기본적인 구문입니다. - Java에서의 switch 문을 대체하며 더 강력하고 유연한 기능을 제공합니다.
특징
설명
다중 조건 검사
여러 조건을 한 번에 검사할 수 있습니다.
표현식으로 사용
값을 반환할 수 있는 표현식으로 사용될 수 있습니다.
다양한 조건 검사 가능
특정 조건에 대한 범위 내에서 값을 검사하거나 혹은 타입에 대한 검사에 대해서 수행할 수 있습니다.
💡 when 문의 기본 구조
- 평가하려는 값에 대해서는 ‘()’안에 넣습니다 : expression - 중괄호(’{}’) 안에는 분기를 넣습니다. 즉, 평가하는 값의 조건에 대한 분기처리 부분을 의미합니다. - 각 검사가 성공했을 때 수행할 작업을 ‘→’을 통해서 구분합니다.
구성 요소
설명
expression
평가할 표현식 (선택적)
value1, value2 등
일치하는 값
in range
범위 내의 값 검사
is Type
타입 검사
else
모든 조건이 일치하지 않을 때의 기본 처리
when (expression) {
value1 -> { /* 코드 블록 */ }
value2 -> { /* 코드 블록 */ }
value3, value4 -> { /* 코드 블록 */ }
in range -> { /* 코드 블록 */ }
is Type -> { /* 코드 블록 */ }
else -> { /* 기본 코드 블록 */ }
}
💡 when 문의 사용예시
1. 기본적인 when 문 : x의 값에 따라 다른 메시지를 출력합니다 2. 값을 반환하는 when 문 : when 문이 값을 반환합니다 3. 타입 검사를 위한 when 문 : when 문을 사용하여 x의 타입을 검사합니다. 4. 함수 호출문 : checkType 함수를 다양한 타입의 인자로 호출하여 각각의 결과를 보입니다.
fun conditionWhenExp(x: Int, y: Int) {
// 사용예시 -1 : 기본적인 when 문 사용
when (x) {
1 -> println("x is 1")
2 -> println("x is 2")
else -> println("x is neither 1 nor 2")
}
// 사용예시 -2 : 값을 반환하는 when 문
val result = when (x) {
0, 1 -> "x is 0 or 1"
in 2..10 -> "x is between 2 and 10"
else -> "x is outside the range"
}
// 사용예시 -3 : 타입 검사를 위한 when 문
fun checkType(x: Any) = when (x) {
is Int -> println("x is an Integer")
is String -> println("x is a String")
is List<*> -> println("x is a List")
else -> println("x is of unknown type")
}
// 사용예시 -4 : 함수를 호출하여 값을 출력합니다.
checkType(5) // 출력: x is an Integer
checkType("Hello") // 출력: x is a String
checkType(listOf(1, 2, 3)) // 출력: x is a List
checkType(3.14) // 출력: x is of unknown type
}
💡 RANGE - Kotlin에서 RANGE는 특정 범위의 값을 나타내는 개념입니다. - 주로 '..' 연산자를 사용하여 정의하며, 시작 값과 끝 값을 포함합니다. - 반복문이나 조건문에서 유용하게 사용됩니다.
1. 기본 RANGE 생성
💡 기본 RANGE 생성
- 아래와 같이 숫자에 대한 범위, 문자에 대한 범위를 출력할 수 있습니다.
// 정수 범위: 1부터 5까지의 연속된 정수를 나타냄
val intRange = 1..5
// 문자 범위: 알파벳 소문자 a부터 z까지의 연속된 문자를 나타냄
val charRange = 'a'..'z'
// 날짜 범위: 2024년 1월 1일부터 12월 31일까지의 날짜를 나타냄
val dateRange = LocalDate.of(2024, 1, 1)..LocalDate.of(2024, 12, 31)
// 시간 범위: 오전 9시부터 오후 5시까지의 시간을 나타냄
val timeRange = LocalTime.of(9, 0)..LocalTime.of(17, 0)
println("Integer Range: $intRange")
println("Character Range: $charRange")
println("Date Range: $dateRange")
println("Time Range: $timeRange")
// 출력 결과:
// Integer Range: 1..5
// Character Range: a..z
// Date Range: 2024-01-01..2024-12-31
// Time Range: 09:00..17:00
2. RANGE 사용 예시
💡 RANGE 사용 예시
1. for 루프에서 사용: 1부터 5까지의 숫자를 반복하여 출력합니다. 2. if 문에서 사용: 변수 x가 1에서 10 사이의 값인지 확인합니다. 3. when 문에서 사용: 변수 x의 값이 1에서 5 사이인지, 또는 6에서 10 사이인지 확인합니다.
// 1. for 루프에서 사용
for (i in 1..5) {
println(i) // 1, 2, 3, 4, 5 출력
}
// 2. if 문에서 사용
val x = 3
if (x in 1..10) {
println("x는 1에서 10 사이에 있습니다.")
}
// 3. when 문에서 사용
when (x) {
in 1..5 -> println("x는 1에서 5 사이에 있습니다.")
in 6..10 -> println("x는 6에서 10 사이에 있습니다.")
}
3. RANGE 관련 함수
💡 RANGE 관련 함수
- 아래와 같은 연산자를 활용하여 범위 내의 값에 대해서 출력을 합니다.
연산자
설명
..
시작값부터 끝값까지 포함하는 범위를 생성합니다.
until
끝값을 포함하지 않는 범위를 생성합니다.
step
범위의 증가 또는 감소 단계를 지정합니다.
downTo
큰 수에서 작은 수로 감소하는 범위를 생성합니다.
💡 사용예시
1. until: 끝 값을 포함하지 않는 범위를 생성합니다. 예시에서 1 until 5는 1, 2, 3, 4를 포함합니다.
2. step: 범위의 증가 단계를 지정합니다. 예시에서 1..10 step 2는 1, 3, 5, 7, 9를 출력합니다.
3. downTo: 큰 수에서 작은 수로 감소하는 범위를 생성합니다. 예시에서 5 downTo 1은 5, 4, 3, 2, 1을 출력합니다.
4. 범위 연산자 (..): 시작값부터 끝값까지 포함하는 범위를 생성합니다. 예: 1..5는 1, 2, 3, 4, 5를 포함합니다.
5. in 연산자: 값이 범위 내에 있는지 확인합니다. 예: 3 in a는 true를 반환합니다.
6. 괄호를 사용한 범위 연산자: 괄호를 사용하여 범위를 명확하게 지정할 수 있습니다. 예: (1..5)는 1부터 5까지의 범위를 나타냅니다.
// until: 끝 값을 포함하지 않는 범위
for (i in 1 until 5) {
println(i) // 1, 2, 3, 4 출력
}
// step: 증가 값 지정
for (i in 1..10 step 2) {
println(i) // 1, 3, 5, 7, 9 출력
}
// downTo: 역순 범위
for (i in 5 downTo 1) {
println(i) // 5, 4, 3, 2, 1 출력
}
// 범위 연산자
val a = 1..5 // 1, 2, 3, 4, 5를 포함하는 범위
val b = 5 downTo 1 // 5, 4, 3, 2, 1을 포함하는 범위
val c = 1 until 5 // 1, 2, 3, 4를 포함하는 범위 (5는 제외)
val d = 1..5 step 2 // 1, 3, 5를 포함하는 범위
println(3 in a) // true
println(6 in a) // false
// 괄호를 사용하는 범위 연산자
val e = (1..5) // 1, 2, 3, 4, 5를 포함하는 범위
val f = (5 downTo 1) // 5, 4, 3, 2, 1을 포함하는 범위
val g = (1 until 5) // 1, 2, 3, 4를 포함하는 범위 (5는 제외)
val h = (1..5 step 2) // 1, 3, 5를 포함하는 범위
println(3 in (1..5)) // true
println(6 in (1..5)) // false
4. RANGE 속성과 메서드
속성/메서드
설명
예시
first
범위의 첫 번째 요소를 반환
(1..5).first // 1
last
범위의 마지막 요소를 반환
(1..5).last // 5
start
범위의 시작 값을 반환
(1..5).start // 1
step
범위의 증가 단계를 반환
(1..10 step 2).step // 2
endInclusive
범위의 포함된 끝 값을 반환
(1..5).endInclusive // 5
endExclusive
범위의 제외된 끝 값을 반환 (마지막 값 + 1)
(1 until 5).endExclusive // 5
isEmpty()
범위가 비어있는지 확인
(1..1).isEmpty() // false
contains()
범위에 특정 값이 포함되어 있는지 확인
(1..5).contains(3) // true
in 연산자
값이 범위 내에 있는지 확인
3 in 1..5 // true
val range = 1..5
println(range.start) // 1
println(range.endInclusive) // 5
println(range.isEmpty()) // false
println(3 in range) // true
@Component
class LoopComponent {
/**
* for문 반복문을 사용한 예시
*/
fun forLoop() {
// 범위를 이용한 for 루프-1 : 1이상 5이하 출력
for (i in 1..5) {
println(i) // 출력: 1, 2, 3, 4, 5
}
// 범위를 이용한 for 루프-2 : 1이상 5이하 출력
val range = 1..5
for (i in range) {
println(i) // 출력: 1, 2, 3, 4, 5
}
// 범위를 이용한 for 루프-3 : 1이상 5미만 출력
for (i in 1 until 5) {
println(i) // 출력: 1, 2, 3, 4
}
// 범위를 이용한 for 루프-4 : 5이하 1이상 출력(역순출력)
for (i in 5 downTo 1) {
println(i) // 출력: 5, 4, 3, 2, 1
}
// 범위를 이용한 for 루프-5 : 1부터 시작해서 2씩 증가하면서 10 이하의 모든 값(1, 3, 5, 7, 9)이 출력됩니다.
for (i in 1..10 step 2) {
println(i) // 출력: 1, 3, 5, 7, 9
}
// 범위를 이용한 for 루프-6 : 10부터 시작해서 -2씩 감소하면서 10 이하의 모든 값(10, 8, 6, 4, 2)이 출력됩니다.
for (i in 10 downTo 1 step 2) {
println(i) // 10, 8, 6, 4, 2 출력
}
// 범위를 이용한 for 루프 -> 1이상 5미만 출력
for (i in 1 until 5) {
println(i) // 1, 2, 3, 4 출력
}
// 컬렉션을 이용한 for 루프
val fruits = listOf("apple", "banana", "cherry")
for (fruit in fruits) {
println(fruit)
}
// 인덱스와 함께 사용
for ((index, value) in fruits.withIndex()) {
println("$index: $value")
}
}
}
- Kotlin에서는 break와 continue를 사용하여 반복문을 제어할 수 있습니다.
for (i in 1..10) {
if (i == 3) continue // 3일 때 다음 반복으로 건너뜁니다
if (i > 5) break // 5보다 크면 반복문을 종료합니다
println(i)
}
4) Kotlin 해당 글 주요 개념 요약
구분
종류
설명
조건식
if문
- 조건에 따라 코드 실행 흐름 제어 - 값을 반환할 수 있는 표현식으로 사용 가능
조건식
when문
- switch문과 유사 - 여러 조건을 처리할 수 있는 구문
조건식
Range
- 범위를 나타내는 표현식 (1..5, 1 until 5 등) - first, last, contains() 등 다양한 메서드 제공
반복문
for 루프
- in: 범위 내 값 반복 (1..5) - until: 끝값 제외 범위 (1 until 5) - downTo: 역순 범위 (5 downTo 1) - step: 반복 단계 지정 (1..10 step 2)
반복문
while 루프
- 조건이 참인 동안 계속 실행
반복문
do-while 루프
- 최소 한번 실행 후 조건 검사
제어문
break, continue
- break: 반복문 종료 - continue: 다음 반복으로 건너뛰기
// 1. 조건식 예시
val number = 10
// if 문 사용
val result = if (number > 0) "양수" else "음수"
// when 문 사용
val grade = when (number) {
in 90..100 -> "A"
in 80..89 -> "B"
in 70..79 -> "C"
else -> "D"
}
// 2. Range 예시
val range = 1..5
println(3 in range) // true
println(range.first) // 1
println(range.last) // 5
// 3. 반복문 예시
// for 루프
for (i in 1..5) println(i) // 1,2,3,4,5
for (i in 5 downTo 1) println(i) // 5,4,3,2,1
for (i in 1..10 step 2) println(i) // 1,3,5,7,9
// while 루프
var i = 0
while (i < 3) {
println(i)
i++
}
// do-while 루프
var j = 0
do {
println(j)
j++
} while (j < 3)
// 제어문 예시
for (i in 1..5) {
if (i == 3) continue // 3을 건너뜀
if (i == 4) break // 4에서 종료
println(i)
}