![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNQ61P%2FbtrhyjPFKIB%2FEMTGyKbVsbE8GBOaOowD90%2Fimg.png)
코틀린(Kotlin) 제어문(for, if, when, while)
Notepad96
·2020. 9. 17. 23:22
![](https://blog.kakaocdn.net/dn/bNQ61P/btrhyjPFKIB/EMTGyKbVsbE8GBOaOowD90/img.png)
1. 조건문
1-1. If
if문 같은 경우 Java와 동일하다.
if문의 경우 if [~ else if ~ else] 의 구조를 갖는다.
단, 기존의 if문과 다르게 조건에 따른 결과를 변수에 저장할 수 있으며, 따라서 삼항연산자는 없다.
1-2. when
기존 다른 언어에서 사용하던 switch문과 유사하다.
단, 기존의 switch문과는 다르게 조건으로 일련의 범위를 주거나 조건을 여러 개 줄 수 있다.
따로 break를 해줄 필요는 없으며 if문처럼 조건의 따른 결과를 변수에 저장할 수 있다.
1-3. 예제
(직접 수정해보며 실행해볼 수 있다. 로드가 안된다면 새로고침 or play.kotlinlang.org/)
- 코틀린은 강제 형변환이 없기 때문에 Int형 a와 Long형 b가 동일한지 비교 시 형변환을 해주어야만 한다.
- if문의 결과를 변수에 저장할 시 맨 마지막 부분의 저장할 값을 입력하면 된다.
위 예제에서는 a > b 일 경우 max에는 10이 아닐경우 max에는 b가 저장된다.
- when에서는 8, 9, 10 처럼 ,를 사용함으로써 기존 switch문과 다르게 조건을 여러개 줄 수 있다.
- in 8..10 은 8이상 10이하의 범위를 뜻한다.
- !is Int 는 Int형이 아닐경우 참이므로 현재 a는 Int형이므로 실행되지 않는다.
2. 레이블(Label)
반복문과 조건문에서 흐름을 제어하기 위해서 사용하는 break와 continue와 같이 사용할 수 있다.
exit@ for(i in 1..4) {
for(k in 1..4) {
print("${i}${k} ")
if(i == 2 && k == 2) break@exit
}
println()
}
예를들어 위같은 2중 for문일 경우 안쪽 if문의 조건의 따라 break하면 본래는 안쪽 for문만 종료가되며 바깥 for문은 계속 반복한다.
하지만 위처럼 exit라는 label을 준 후 이를 break 시켜버린다면 label이 지정된 부분으로가서 흐름제어를 하게 된다.
3. 반복문
3-1. for
코틀린 for문의 형태를 Java와 비교해본다면 Java에서 향상된 for문이라고 불렀던 for each문과 유사하다.
값이 증가할 때는 in~..을 감소할 때는 in~downTo 를 사용한다.
step을 사용하여서 증가, 감소하는 숫자값을 지정해 줄 수 있다.
이 같은 구조를 통하여 코드량을 줄일 수 있다.
(직접 수정해보며 실행해볼 수 있다. 로드가 안된다면 새로고침 or play.kotlinlang.org/)
- 기본적으로 in~..으로 일정 범위를 for문으로 반복할 수 있다.
- 감소하는 for문일 경우 in~downTo를 사용해 주었다.
- 배열일 경우 직접 접근하여 값을 바로 가져올 수 있으며, 인덱스로 접근하고 싶다면 해당 예제처럼 0~size-1범위의 for문을 index의 범위를 반복하는 for문으로 만들면 된다.
- 위 예제에는 2개의 2중-for문이 있다.
결과를 보면 차이가 있는 것을 볼 수 있다.
첫번 째 2중-for문은 i==2 and k==2조건이 만족하여 break문이 실행되어 for문이 종료되었지만 종료된건 안쪽의 i=2일 경우의 for문이므로 i=3일 경우 i=4일 경우는 실행되었다.
하지만 2번 째 2중-for문은 label을 사용하여서 밖에 for문을 종료해 줌으로써 안쪽에서 바깥쪽의 for문을 종료한 것을 확인할 수 있다.
3-2. while, do~while
while
반복문으로서는 거의 for문이 사용된다.
하지만 반복 할 횟수가 정확하게 정해져 있지 않을 경우에 while문을 사용한다.
따라서 while을 사용해줌으로써 특정 조건이 만족하기 전까지 계속 반복 할 수 있지만 무한 루프에 빠지지 않도록 조심해야 한다.
do~while
while문과 전체적인 특성은 다 같다.
단, 조건 검사 이전에 실행문을 먼저 실행함으로써 조건의 참/거짓의 상관없이 맨 처음은 무조건 실행되는 구조이다.
조건의 상관없이 한번은 무조건 실행해야 할 경우 사용해 주면 된다.
(직접 수정해보며 실행해볼 수 있다. 로드가 안된다면 새로고침 or play.kotlinlang.org/)
4. 참 조
Control Flow: if, when, for, while - Kotlin Programming Language
kotlinlang.org
'Kotlin > Syntax' 카테고리의 다른 글
Kotlin 접근 지정자(= 가시성 지정자, Visibility Modifiers) (0) | 2020.10.01 |
---|---|
Kotlin null, nullable 타입 (0) | 2020.09.23 |
Kotlin 예외(Exception) 처리 (0) | 2020.09.21 |
코틀린(Kotlin) 클래스 (0) | 2020.09.18 |
코틀린(Kotlin) 기본 문법(자료형, 형변환, 배열) (0) | 2020.09.15 |