[Kotlin] 조건문 / 반복문

박진성·2023년 6월 2일
0
post-custom-banner

Range 표현



IntRange

  • 3가지로 범위 표현 가능
  • 1 ~ 10 범위
1 .. 10
1.rangeTo(10)
1 until 11
  • until 은 끝이 열려있다!

CharRange

  • IntRange와 동일함
  • A ~ Y 범위
'A' .. 'Y'
'A'.rangeTo('Y')
'A' until 'Z'

Collection 으로 변환

  • List 나 Set으로만 변환 가능
  • 한번더 타입 바꿔줘서 Array로 변환 가능
var arr = (1 .. 10).toList().toTypedArray()

in operator

  • range 표현식은 in 과 자주 사용됨
  • 좌항값이 우항에 포함되는지 안되는지 Boolean 값 반환
val result = 0 in 0 .. 10
print(result) 
// true



조건문



If 절

  • 일반적인 If 문과 똑같다
if(조건문){}
else if(조건문){}
else{}
  • 값리턴 if 문
    • Kotlin 은 3항연산자를 지원하지 않으므로, If문을 이용하여 구현 가능
val a = 5
val b = 10

val max = if(a>b){
	a
} else{
	b
}

When 절

  • C++ 의 switch 문과 흡사하다

  • when 안의 값의 경우의 수 별로 코드 작성 가능


when(x){
	1 -> print(1)
	2 -> print(2)
	3 -> print(3)
	else -> print(0)
}
  • is operator 로 타입체크 가능
when(x){
	is Int -> print("Int 자료형 입니다")
	is String -> print("String 자료형 입니다")
	is IntArray -> print("IntArray 자료형 입니다")
	else -> print(0)
}
  • 범위체크 가능
when(score){
	in 90 .. 100 -> print("A")
	in 80 until 90 -> print("B")
	in 70 until 80 -> print("C")
	else -> print("F")
}



반복문



for 문

  • range 표현식, in operator 로 활용 가능
  • until / downTo / step 으로 방향및 칸수 설정 가능
val names = arrayOf(1,2,3)

for ( name in names ){ }
// names 배열 원소 차례로 반복

for (i in 0 .. 10){ }
// 0 ~ 10 반복

for( i in 0 until 10 ){ } 
// 0 ~ 9 반복

for( i in 10 downTo 0 ) { }  
// 10 ~ 0 반복

for( i in 0 until 10 step 2) { }  
// 0 ~ 10  2칸씩 반복

while 문

  • 일반적인 while문
while (조건식){}

do {} while (조건식)

break 와 continue

  • 중첩 Loop 시, 탈출지점 라벨링 가능
    • 키워드@ 로 탈출지점 라벨링
    • break@키워드 로 탈출시 라벨링 지점루프 탈출
var a = 0
var b = 0

loop@for( i in 0..10){
    for(j in 0..10){
        if(i==5 && j==6){
            a = i
            b = j
            break@loop
        }
    }
}
print("$a $b")

forEach 문

  • for문과 동작 똑같음
var arr = arrayOf(1,2,3)

arr.forEach{i -> print(i)}

(1..10).forEach{i -> print(i)}
  • break / continue 사용 불가!
  • Collection 반복할때, for문보다 퍼포먼스가 좋음!!
fun loop(i: Int){
    for(i in 0..i){}
}

fun main() {

   val list = (1..10000).toList()

   for (i in list) { loop(i) }
   list.forEach { i -> loop(i) }
}
profile
Android Developer
post-custom-banner

0개의 댓글