Kotlin5. 제어구문 if(표현식), when 등등... 분기(分岐)란?
https://developer.android.com/codelabs/basic-android-kotlin-compose-conditionals?hl=ko#0
Kotlin에서 조건문 작성하기 | Android Developers
Kotlin에서 조건문을 작성하는 방법을 알아봅니다.
developer.android.com
1. 분기(分岐)
분기의 뜻은 단순하게 갈림길이 여러개 있다고 생각하면 쉽다.
분기의 기본구문은 if문이라고 할수있다. ( yes / no의 갈림길로 뻣어나간다.)
제어구문 : 전반적인 처리의 흐름을 제어하기 위한 구문 (ex. 메일계정에 @가 없다면? 어떤 결과를 출력해야하지? )
제어구문에는 분기와 반복문이 존재한다.
(1) if문
조건이 ture 인지 false인지에 따라 결과값이 달라진다.
fun main() {
val x = 123
if(x%2==0){
println("결과 : " +x+"는 짝수입니다.")
}else{
println("결과 : " +x+"는 홀수입니다.")
}
//output 결과 : 123는 홀수입니다.
}
연산의 나머지가 0인지 (true) 아닌지 (false)에 따라 결과가 달라짐.
※ 코틀린에서는 if는 조건문이 아니라 표현식이라한다 . 결과값이 있기때문에
(2) when문
다수의 분기처리를 행하는 when문 (if는 둘 중에 하나를 선택하는반면, when은 여러개 중 하나를 고를수있다.)
fun main() {
val level = 7
when(level){
1,2,3 -> println("コーヒー")
4,5,6 -> println("ケーキ")
7,8,9 -> println("しゃぶしゃぶ")
else -> println("sweet")
}
//output しゃぶしゃぶ
}
만약 val level = 7 에 맞는 조건이 없으면 sweet을 출력한다.
필요하다면 else문은 생략가능하다. 이런 경우에 조건에 맞지 않는다면 실행하지 않는다.
fun main() {
val level = 0
when(level){
1,2,3 -> println("コーヒー")
4,5,6 -> println("ケーキ")
7,8,9 -> println("しゃぶしゃぶ")
//else -> println("sweet")
}
println("값이 없습니다")
//output 값이 없습니다
}
2. 반복문
조건을 토대로 반복하여 결과값을 토해낸다.
(1) while문
fun main() {
val number = 3
var total = 0
var count = 0
while(number>count++){
total += count
println("total : " + total)
}
println("total : " + total)
//output
total : 1
total : 3
total : 6
total : 6
}
while의 조건이 >=이면?
fun main() {
val number = 3
var total = 0
var count = 0
while(number>=count++){
total += count
println("total : " + total)
}
println("total : " + total)
//output
total : 1
total : 3
total : 6
total : 10
total : 10
}
한번 더 더하게 된다.
do문
fun main() {
var num = 0
do {
println("num is $num")
num++
} while (num < 3)
//output
num is 0
num is 1
num is 2
}
do문과 while문의 차이점 : do문은 처음에 무조건 한번 돌린다. (조건이 false인지 true인지 상관없이)
아주 특수한 문법으로 이런 형태도 가능하다라 정도만 참고하기.
(2) for문
fun main() {
val num = 5
var total = 0
for(count in 1..num){
total ++
println(total)
}
//output
1
2
3
4
5
}
1과 5을 포함 즉 5번 돌아간다.
(3) continue 와 break
도중에 반복문에서 빠져나와 할 경우 사용한다.
- break : 그 장소에서 처리를 중단하고 반복구문을 빠져나와서 다음 명령을 실행한다.
- continue : 그 장소에서 처리를 중단하고 그 다음 반복구문을 돌린다.
fun main() {
val num = 5
var total = 0
var count = 0
while(true){
total += ++count
if(count == num) break
else continue
print("이 부분까지 못옵니다. ")
}
println("total : " + total)
//output total : 15
}
안드로이드 스튜디오로 연습할때..
.kt 파일은 영어로 되어있어서 기계가 읽을 수 없다 → 코틀린 컴파일러가 필요하다.
(자바를 번역한 모양과 똑같다. 기계 입장에서는 다 자바로 보인다. 코틀린이라는 언어는 뭔지 모름)
기계는 오로지 .class만 읽을수있다. 자바의 시스템에 표기법만 다르다.
개발자 입장에서는 kt이고 기계입장에서는 여전히 java이다.