Kotlin 기본[2] - Null, 엘비스 연산자, if , when, for

하동혁 ·2023년 3월 30일
0

Kotlin

목록 보기
2/10
post-thumbnail

 

▪️ Null & NUll Safe

  • 코틀린의 변수 선언은 본래 null을 허용하지 않음
    val a:Int = 24
  • Null을 허용할 수 있도록 선언 ( ? )
    val a:Int? = 24
  • null을 허용하지 않는곳에 null을 할당하면?
    NullPointException 예외 발생

 

▪️ Non-null

  • 변수 뒤에 "!!"로 표시
  • property나 변수에 붙이면 강제로 null이 아니다라고 선언
  • null이 들어오면 NullPointException 발생
fun ignoreNulls(s: String?) {
    val s2: String = s!! 
    println(s2.length)
}

 

▪️ Safe-call

  • 변수 뒤에 "?"를 붙여서 호출, null값을 혀용
fun safeCall(s: String?):Int? {
    println("safeCall : ${s?.length}")
    return s?.length
}

 

▪️ 엘비스 연산자

  • null인 경우 default값을 주고 싶을때 "?:"를 사용
fun elvis(s: String?):Int {
    println("elvis : ${s?.length}")
    return s?.length ?: 0  // null이면 0을 리턴
}

 

▪️ if

  • 자바와 다르게 코틀린에서는 if문 결과를 리턴받을 수 있다.
    (코틀린에서는 삼항 연산자가 없다.)
  • 나머지는 자바와 동일
val a = 10; 
val b = 5; 
val num = if(a>b) a else b

 

▪️ when

  • when문은 위에서 아래로 해당되는 것이 나타나면 아래로 계속 진행하지 않고 바로 stop한다.
  • 값이 하나인 경우 콤마나 in연산자로 값의 범위를 자유롭게 지정하고 싶을 때 사용한다.
  • when문의 각 조건에 블럭으로 감쌀 수도 있고, 안 할 수도 있다.
val a = 3;
when(a) {
	1 -> println("1")
    2 -> println("2")
    3 -> println("3")
   	in 4..5 -> println("4")
	else ->{
    	println("a는 5보다 크다.")
    }
}

 

▪️ for

  • in 연산자를 통해서 배열을 순회 가능
  • downTo, step, until
    val num = arrayOf(1, 2, 3, 4)
    
    for (n in num) {
        println(n) // 1; 2; 3; 4;
    }
    
    for (i in 1..4) {
        println(i) // 1; 2; 3; 4;
    }
    
	for (i in 0..10 step 2) {
        println(i) // 0; 2; 4; 6; 8; 10;
    }
    
    for (i in 10 downTo 0 step 2) {
        println(i) // 10; 8; 6; 4; 2; 0
    }
    
    for (i in 0..10 step 2){
        println(i) // 0; 2; 4; 6; 8; 10;
    }

 

    for( i in num.indices) {
        println("num.indices : index-$i : value-${num7[i]}")
    }
    
    num.forEach { println("foreach : $it") }
    
    num.forEachIndexed { index, value ->
        println("forEachIndexed : index-$index : value-$value")
    }

결과
num.indices : index-0 : value-1
num.indices : index-1 : value-2
num.indices : index-2 : value-3
num.indices : index-3 : value-4
foreach : 1
foreach : 2
foreach : 3
foreach : 4
forEachIndexed : index-0 : value-1
forEachIndexed : index-1 : value-2
forEachIndexed : index-2 : value-3
forEachIndexed : index-3 : value-4

 

while / do while / break / continue

자바와 동일

 

▪️ label(@)

레이블이 붙여진 곳으로 이동이 가능하다.
중첩된 반복문에서 완전히 탈출하고 싶을 때 주로 사용된다.

out@for(i in 1..10){
		for(j in 1..10){
        	if( j == 3 ) break@out	
        }
}

0개의 댓글