[Kotlin] 조건문(if, when) / 반복문(for, while, forEach) / 연산자
조건문
💡 IF문
: if문의 조건문이 참일 때 따라오는 구문을 실행하는 기능
: 참과 거짓을 구분하기 위해서는 비교 연산을 통해 구할 수 있다
Example
fun main() {
var a = 7
if(a>10){
println("a는 10보다 크다.")
} else{
println("a는 10보다 작거나 같다.")
}
}
결과 ▶︎ a는 10보다 작거나 같다. (조건에 대하여 거짓이므로 else문으로 간다.)
💡 비교연산자
: 부등호 → < <= > >= !=
: 등호 → ==
: is 연산자, !is 연산자 (자료형이 맞는지 체크) → a is Int (형변환까지 한번에 진행시켜줌)
💡 WHEN (다중 조건문)
: switch문을 좀 더 편리하게 바꾼 기능
: 하나의 변수를 여러 개의 값과 비교할 수 있다는 장점이 있다.
: 다만, 등호나 부등호의 사용은 불가능하다.
: 여러 개의 조건에 부합하더라도, 먼저 부합하는 조건이 실행됨을 유의!!
Example (main 함수에서 doWhen 함수 호출하여 사용)
fun doWhen(a:Any){
when(a){
1 -> println("점수 1 입니다.")
"Dimo" -> println("Dimo의 코틀린 강좌입니다.")
is Long -> println("Long 타입 입니다.")
!is String -> println("String 타입이 아닙니다.")
else -> println("어떤 조건도 만족하지 않습니다.")
}
}
cf.) Any 자료형 : 어떤 자료형이든 상관없이 호환되는 코틀린의 최상위 자료형
Example (when의 결과를 변수로 받아 사용도 가능)
fun doWhen(a:Any){
var result = when(a){
1 -> println("점수 1 입니다.")
"Dimo" -> println("Dimo의 코틀린 강좌입니다.")
is Long -> println("Long 타입 입니다.")
!is String -> println("String 타입이 아닙니다.")
else -> println("어떤 조건도 만족하지 않습니다.")
}
println(result)
}
반복문
💡 조건형 반복문 (조건이 참인 경우 반복을 유지)
1) while문
fun main(){
var a = 0
while(a<5){
println(a++)
}
}
결과 ▶︎ 0 1 2 3 4
먼저 while의 조건식이 참인지 확인 → 참이라면 while에 따르는 구문 1회 수행(후위 증가 연산자이기 때문에 화면에 출력된 후에 장가값이 반영) → 다시 while문에 돌아와서 조건 확인 → while문이 거짓이 되는 순간 반복을 중단하고 다음 구문으로 넘어감
fun main(){
var a = 0
while(a<5){
println(++a)
}
}
결과 ▶︎ 1 2 3 4 5
전위 연산자이기 때문에 해당 구문 내에서 증가된 값을 즉시 반영한다. 증가가 먼저 된 후 화면에 출력하게 된다.
📍 증감 연산자
: 증가 연산자 (++a, a++) = 변수의 값을 1 증가시키는 역할
: 감소 연산자 (--a, a--) = 변수의 값을 1 감소시키는 역할
Q. 연산자가 앞에 붙는 것과 뒤에 붙는 것의 차이?
A. 전위 연산자 (++a, --a) : 연산자가 포함된 구문에서 이미 증감된 수를 반영하여 연산이 진행
A. 후위 연산자 (a++, a--) : 증가나 감소된 수를 해당 구문에서 사용하지 않고 다음 구문부터 사용
2) do...while문
: while문에 의해 조건을 체크하여 반복한다는 점은 while문과 동일
: 최초 한 번은 조건없이 do에서 구문을 실행한 후 while로 조건을 체크한다는 선후관계에 차이가 있다
fun main(){
var a = 0
do{
println(a++)
} while(a<5)
}
결과 ▶︎ 0 1 2 3 4
💡 범위형 반복문 (반복 범위를 정해 반복을 수행)
1) For문
fun main(){
for(i in 0..9){
print(i)
}
}
결과 ▶︎ 0123456789
: i 앞에 var는 붙이지 않아도 된다
: 기본적으로 1씩 증가하면서 for문이 반복하게 된다
: 증가할 때에 .. 를 사용하여 증가시킨다
: print는 println과 달리 문단 변경 없이 이어서 출력된다
fun main(){
for(i in 0..9 step 3){
print(i)
}
}
결과 ▶︎ 0369
: 1씩 증가하는 것보다 더 큰 수씩 증가하고 싶을 때 step을 사용하면 된다
: 3씩 증가되었음을 확인할 수 있다
fun main(){
for(i in 9 downTo 0){
print(i)
}
}
결과 ▶︎ 9876543210
: 감소는 .. 대신에 downTo 라는 키워드를 사용한다
: 기본적으로 1씩 감소하도록 할 수 있다
: 감소 역시 step을 사용하면 단계를 변경할 수 있다
fun main(){
for(i in 'a'..'e'){
print(i)
}
}
결과 ▶︎ abcde
: for문은 char 자료형에도 사용할 수 있다
연산자
💡 코드의 흐름을 제어할 수 있는 키워드
- return : 함수를 종료하고 값을 반환하는 역할
- break : 반복문 내의 구문이 실행되는 중간에 즉시 반복문을 중단하고 다음 구문으로 넘어가는 역할
- continue : 다음 반복 조건으로 즉시 넘어가는 역할
for main(){
for(i in 1..10){
if(i==3) break
println(i)
}
}
결과 ▶︎ 1 2
i가 3이 되는 순간 멈춘다
for main(){
for(i in 1..10){
if(i==3) continue
println(i)
}
}
결과 ▶︎ 1 2 3 4 5 6 7 8 9 10
i가 3이 되는 시점을 제외한 모든 숫자가 찍히게 된다
loop@for main(){
for(i in 1..10){
for(j in 1..10){
if(i==1 && j==2) break@loop
println("i: $i, j: $j")
}
}
}
결과 ▶︎ i: 1, j: 1
: 다중 반복문에서 코틀린은 한 가지 기능이 더 추가되었다
: break 나 continue 가 적용되는 반복문을 label을 통해 지정할 수 있는 기능이다
: 기존) 내부 반복문에서 조건을 체크하여 break를 하더라도,
외부 반복문에서 다시 조건을 체크하여 모든 반복문을 수동으로 종료해야 한다
: 코틀린) 레이블이름@ 이 달린 반복문 기준으로 즉시 break 시켜준다
cf.) “” 안에서 변수를 출력할 때는 $를 변수 앞에 붙여주면 변수 내용으로 대체되어 출력된다
💡 논리 연산자
: 논리값을 연산하여 새로운 논리값을 도출할 때 쓰는 연산자
: 조건문인 if문에서 많이 사용된다
- && (and연산자) : 둘다 true인 경우 결과값이 true
- || (or연산자) : 둘 중 하나가 true인 경우 결과값이 true
- ! (not연산자) : 뒤에 붙는 값을 반전시킴, true 이면 false / false 이면 true
fun main(){
println(true&&false)
println(true||false)
println(!true)
println(!false)
}
결과 ▶︎ false true false true
for main(){
var a = 6
var b = 4
println(a>5 && b>5)
}
결과 ▶︎ false
'공부 > Kotlin' 카테고리의 다른 글
[Kotlin] 함수(fun, override fun) / 타입추론 (0) | 2022.06.12 |
---|---|
[Kotlin] 형변환 / 배열(ArrayList, MutableList) (0) | 2022.06.12 |
[Kotlin] 변수와(var, val) 상수 / 기본 자료형 (0) | 2022.06.11 |
댓글