본문 바로가기

[Kotlin] 코틀린 기본 - 제어문 'if / when / for / while'

[Kotlin] 코틀린 기본 문법, 제어문

코틀린 제어문 ( if / when / for / while / do~while )

 

 

제어문 개념

  • 코틀린의 제어문은 크게(if / when / for / while) 4가지로 구분
  • when문을 제외하면 거의 유사한 형태
  • 자바와 코틀린의 제어문은 개념이 다른 형태 (문 "Statement" / 식 "Expression")

     : 자바는 제어문의 개념이 "문"의 형태 / Kotlin은 반복문을 제외한 나머지는 식 "Expression"의 형태


      1) 문 "Statement" - 값을 반환하지 않는 형태 (retrun x)
// JAVA

// if문 : 기본적으로 문의 형태로 식처럼 사용하려면 retrun을 직접 입력해줘야 함
if(a > b) {
 return true;
} else {
 return false;
}

// switch문 : 기본적으로 문의 형태로 식처럼 사용하려면 retrun을 직접 입력해야 함
switch(num){
    case 1:
    	return "숫자 1";
    case 2:
	return "숫자 2";
    case 3:
	return "숫자 3";
    else :
	return "그 이상 숫자";
}

 

           2) 식 "Expression" - 값을 반환하는 형태 (return)

// Kotlin

// if문 : 식의 형태
// Java의 삼항연산자와 비슷 "a > b ? true : false"
if(a > b) true else false

// when문 : Java의 switch문과 비슷
when(num){
    1 -> "숫자 1"
    2.3 -> "숫자 2 or 3"
    in 4..8 -> "숫자 4~8 사이"
    !in 9..12 -> "숫자 9~12사이 아님"
    else -> "그 외 숫자"
}

 

 

when

  • 자바의 switch와 유사

    switch - 문(Statement)의 형태

    when - 식(Expression)의 형태

var num = 10

when(num){
    1 -> "값 1"
    2,3,4 -> "값 2,3,4 중 하나"
    in 5..10 -> "값 5~10 중 하나"
    else -> "그 이외의 값"
}

// 함수의 반환값으로 사용 가능
var number = 100

fun isEven(num:Int) = when (num%2) {
    0 -> "짝"
    else -> "홀"
}

// 짝 출력
println(isEven(number))		

 

 

for

  • 배열이나 컬렉션을 순회하는 문법
  • Java의 foreach문과 비슷 -  for( <Element> : <Elements> )


     : 기본 사용방법
val numbers = arrayOf(1,2,3,4,5)

// num = 자료형 변수 (임의의 이름 사용), numbers = 대상 배열
for (num in numbers){
    println(num)			// 1; 2; 3; 4; 5; 출력
}

// Java의 "for (int num : numbers)" 와 유사


           : 범위, 증가/증감 사용방법 

// 1~3까지 출력
for ( i in 1..3) {
    println(i)			// 1; 2; 3; 출력
}

// 0~15까지 3씩 증가하며 출력
for ( i in 0..15 step 3){
    println(i)			// 0; 3; 6; 9; 12; 15;
}

// 15~0까지 3씩 감소하며 출력
for ( i in 15..0 step 3){
    println(i)			// 15; 12; 9; 6; 3; 0;
}

              ".." 키워드우항까지 포함

                   -> "0..15는 -> int i=0; i<=15; i++의 의미"


              일반적으로 Java에서는 우항을 포함하지 않고 사용 "int i=0; i<15; i++"

                   -> ".." 키워드 대신, until 키워드로 사용 (우항 포함 x)

// "0..15는 -> i=0; i<=15; i++"의 의미
for (i in 0..15){
}

// "0 until 15는 -> i=0; i<15; i++"의 의미 
for (i in 0 until 15){
}

 

 

while / do~while 문은 자바와 동일해서 생략.