1. 조건문 - if 와 if-else, if와 else의 중첩
if(조건)에서 조건이 true인 경우 if 문 안으로 들어와 if 문 안에 있는 문장을 실행시킨다.
fun main(args: Array<String>): Unit
{
var a = 15
val b = 11
if(a > b)
{
println("if 안으로 들어옴")
a -= b
}
println(a)
}
if(조건)이 true인 경우 if 문 안에 있는 문장을 실행시키고 false인 경우 else 안에 있는 문장을 실행시킨다.
fun main(args: Array<String>): Unit
{
val a = 10
val b = 5
if(a < b)
println("if")
else
println("else")
if(a > b)
println("a가 크다")
else
println("b는 a 이상이다.")
}
if와 else를 중첩하여 사용이 가능하다.
fun main(args: Array<String>): Unit {
val score = 88
if (score >= 90) {
println('A')
} else if (score >= 80) {
println('B')
} else if (score >= 70) {
println('C')
} else {
println('F')
}
}
2. if-else를 표현식으로 사용하기
if와 else가 모두 갖춰져 있으면 if-else 부분 전체가 표현식이 된다.
자바에서는 삼항 연산자가 있지만 코틀린에서는 if-else를 표현식으로 사용이 가능하므로 삼항 연산자가 존재하지 않는다.
if-else 블록이 비어있거나 마지막 문장이 표현식이 아니라면 Unit 타입이 되어 의미 없는 값이 저장된다.
fun main(args: Array<String>): Unit {
val value: Int = if(10 > 5) {
println("10은 5보다 크다.")
10
} else {
println("10은 5보다 크지 않다.")
5
}
println(value)
// if-else 블록이 비어있거나 마지막 문장이 표현식이 아니라면 Unit 타입이 된다.
val a = if(10 > 5) {}
else {}
val b = if(10 > 5) {
val c = 10
} else {
val d = 5
}
println(a) // kotlin.Unit
println(b) // kotlin.Unit
// println(c) // 변수 생성이 되지 않음
// println(d) // 변수 생성이 되지 않음
}
3. 조건문 - when
when은 자바의 switch-case를 훨씬 업그레이드 한 버전이다.
아래와 같은 형태로 사용한다.
when(타깃 표현식) {
타킷 표현식과 비교할 값 -> {
N개의 문장
}
}
샘플 코드는 다음과 같다.
fun main(args: Array<String>): Unit {
val score = 64
when(score / 10) {
6 -> {println('D')}
7 -> {println('C')}
8 -> {println('B')}
9, 10 -> {println('A')}
else -> {println('F')}
}
println("test")
}
4. when을 표현식으로 사용하기
when도 if처럼 else 블록을 포함하고 있다면 표현식으로 사용이 가능하다.
fun main(args: Array<String>): Unit {
val score = 95
val grade: Char = when(score / 10) {
6 -> 'D'
7 -> 'C'
8 -> 'B'
9,10 -> 'A'
else -> 'F'
}
println(grade) // A
// when을 아래와 같이 사용할 수 있다(if-else처럼)
val grade2: Char = when{
score >= 90 -> 'A'
score >= 80 -> 'B'
score >= 70 -> 'C'
score >= 60 -> 'D'
else -> 'F'
}
println(grade2) // A
}
5. 반복문 - while
while은 특정 문장을 반복할 때 사용하는 키워드로 형태는 다음과 같다.
while(Boolean 표현식) {
while에 포함시킬 문장들
}
샘플 코드는 다음과 같다.
반복 조건을 엉뚱하게 지정하면 무한 루프에 빠질 수 있으니 항상 주의하자!
fun main(args: Array<String>): Unit {
var i = 1
while(i < 10) {
println(i)
i += 1
}
}
6. 반복문 - do-while
do-while문은 문장 마지막에서 조건을 검사하므로 do-while 블록은 적어도 한번은 무조건 실행된다.
아래 샘플 코드를 실행시키면 실행됨이 출력된다.
// 사용 형태
do {
do-while에 포함시킬 문장들
} while(Boolean 표현식)
fun main(args: Array<String>): Unit {
var i = 1
do {
println("실행됨")
} while(i == 0)
}
7. 레이블(Label)
break는 가장 가까운 반복문을 탈출하게 되는 데 레이블을 사용해서 특정 반복문을 탈출할 수 있게 해준다.
break 뒤에 @레이블명으로 지정 후 레이블명@특정반복문을 지정
fun main(args: Array<String>): Unit {
var x = 0
var y = 0
outer@ while(x <= 20) {
y = 0
while(y <= 20) {
if(x + y == 15 && x - y == 5) {
break@outer // 11 라인에 있는 반복문을 탈출
}
y += 1
}
x += 1
}
println("x: $x, y: $y")
// ------------------------
var z = 0
var k = 0
test@ while(z <= 20) {
k = 0
while(k <= 20) {
if(z + k == 15 && z - k == 5) {
break@test
}
k += 1
}
z += 1
}
println("z : $z, k : $k")
}