Coding Memo
Kotlin 조건문/반복문 본문
조건문
Java와 거의 비슷하다.
fun main() {
val a: Int = 1;
if (a > 0) {
println("a=$a 이므로 0보다 큽니다.")
}
}
참고: 변수 앞에 $을 붙여서 ""안에서 출력 가능
ex) println("a=$a"), println("age=${person1.age}")
단, switch 와 비슷한 when 이라는 조건문이 있다.
switch에서 case를 생략한 구문이라고 생각해도 될 듯하다.
switch-case 문에서 case를 뺴고 ':' 대신에 '->'를 사용하고 else를 사용할 수 있다.
해당 하는 값이 없을 경우는 else에 있는 구문이 실행이 되고 else도 없을 경우 아무것도 실행되지 않는다.
switch-case문과 마찬가지로 조건이 여러개 맞더라고 가장 상위의 구문이 실행이 된다.
fun main() {
var a: Int = 5;
when (a) {
1 -> println("1")
2 -> println("2")
3 -> println("3")
else -> {
println("not 1, 2 or 3")
println("a=$a")
}
}
}
when 구문에는 Any 타입을 사용할 수도 있다.
fun main() {
var a: Any = "Hello";
when (a) {
1 -> println("1")
!is Int -> println("a is not Integer")
}
}
참고: Any는 모든 타입을 포함하는 최상위 타입이다.
반복문
while, do-while 문은 Java와 동일하나, Kotlin의 for문은 in 연산자를 이용한 형태로 조금 다르다.
for문은 어떻게 보면 Python의 for문과 조금 닮은 것 같기도...
for ( [변수] in [시작값]..[끝값])
이 방식으로 Java에서의 for ( [변수]=[초기값]; [조건식]; [증/감] ) 와 동일하게 사용할 수 있다.
특이한 점은 [변수] 부분에서 타입을 지정하지 않는 다는 점과 시작 값과 끝 값 사이에 .. (점 2개) 를 넣는다는 점이다.
5번 반복하는 예시를 보자.
fun main() {
for (i in 0..4) {
println(i)
}
}
i 값을 0에서 시작해서 루프 한번 끝날 때 마다 i++를 실행하여 i 값을 증가 시키고 i==4의 조건이 맞을 때 까지 반복한다.
위에서 말했듯이 i에 대한 타입 지정은 따로 없다.
그렇다면 i++ 대신에 i값을 2 또는 3을 증가시키면서 반복문을 쓰려면 어떻게 해야 할까?
-> step을 쓰면 된다.
fun main() {
for (i in 0..10 step 3) {
println(i)
}
}
그렇다면 감소를 시키면서 반복문을 쓰려면?
-> downTo를 이용한다.
for ( [변수] in [시작값] downTo [끝값] step [감소량] )
물론, 여기서 step 부분은 생략해도 되고 생략되면 i-- 을 수행한다.
fun main() {
for (i in 10 downTo 0 step 2) {
println(i)
}
}
또 한가지 신기한 점은 i를 꼭 숫자로 인식할 필요는 없다는 것이다.
따라서 다음과 같은 구문도 가능하다.
fun main() {
for (i in 'A'..'Z') {
print("$i ")
}
println()
}
Java와 마찬가지로 break와 continue 또한 동일하게 사용 가능하다.
더 편리한 점은 break와 continue를 수행할 loop 구문을 지정할 수 있다는 점이다.
2개 이상의 중첩 반복문에서 한 반복문 앞에 loop@를 붙여서 label을 지정할 수 있는데, break@loop, continue@loop과 같이 @loop에 해당하는 구문으로 jump가 가능하다.
(label를 이용하는 방법은 따로 찾아보고 공부해 보아야할 것 같다.)
'Language > Kotlin' 카테고리의 다른 글
Kotlin 인터페이스 (0) | 2021.01.02 |
---|---|
Kotlin 고차 함수 / 람다 함수 (0) | 2020.12.31 |
Kotlin 클래스 (0) | 2020.12.30 |
Kotlin 접근 제어자 (0) | 2020.12.30 |
Kotlin 기본 (memo#1) (0) | 2020.12.29 |