GDSC HUFS 4기/Kotlin Team #6

[6팀] 코틀린 기초(2)

백거누 2022. 10. 3. 16:28

이 글은 이것이 안드로이드다 with 코틀린(개정판)를 참고하여 작성하였습니다.

작성자 : 백건우

개발환경은 Windows, Android Studio입니다.

 

 

#9 If문2

※ if문의 구조와 작동원리

if(A){}
else if(B){}
else{}

if문의 조건문은 boolean 변수이거나 boolean 값이어야 한다..

위와 같은 구조에서는 조건만 따졌을 때 A or B라고 볼 수 있다.

일반적으로 or의 경우 앞이 참이라면 뒤의 경우는 무시되고, 이는 if문의 작동방식과 유사하다.

A가 거짓이면 else if의 경우 ~A and B라고 할 수 있고, else의 경우 ~A and ~B라고 볼 수 있다.

#10 When

C의 switch-case 구문과 유사한 구문(하지만 case 뒤에 break가 default로 들어있다고 생각할 수 있다.)

when에서 할당 연산도 가능하다.

var season = 3
when(season){
    1 -> println("Spring")
    2 -> println("Summer")
    3 -> {
    	println("Fall")
        println("Autumn")
    }
    4 -> println("Winter")
    else -> println("Invalid Season")
}

var month = 3
when(month){
    in 3..5     -> println("Spring")
    is season -> "Summer"
    in 9..11    -> println("Fall")
    12 downTo 2 -> println("Winter")
    else        -> println("Invalid Season")
}

! : not

is : ==

#11 while 반복문

● while 반복문은 반복문 안의 조건문이 참인 동안(while) 반복문 안의 코드를 반복한다.

주의사항 : 반복문을 사용할 때에는 반드시 종료조건을 명시하여 무한루프가 되지 않도록 해야 한다.

이는 의도적으로 무한루프를 발생시켰을 때에도 해당된다.

var x = 1
while(x < 10) {
	println("$x")
	// x++
}

위 코드의 경우 주석처리 된 부분이 무한루프가 발생하지 않도록 하는 코드이다.

#12 do while 반복문

● do while 반복문은 반복문 안의 코드를 한번(do) 실행한 후 조건에 따라 while 반복문이 실행된다.

따라서 반복문 안의 코드가 최소 한번 실행된다.

var x = -1
do{
	println("$x")
	x++
}while(x > 10)

위 코드의 경우 조건문이 거짓임에도 최소 한번은 x가 출력된다.

#13 for 반복문

for문은 변수와 범위로 구성되며 그 외에 step(생략가능)이 추가될 수 있다.

ex) num in 1..10 step 2

step의 경우 default는 1이지만 다른 값으로 step 키워드를 통해 변경해줄 수 있다.

for(num in 1..10){
    print("$num")
}

for(i in 1 until 10){
    print("$i")
}

#14 매개변수

● 매개변수 : 함수에서 함수에 전달되는 값을 저장하는 변수

함수를 선언할 때에는 매개변수와 반환값의 데이터타입을 명시해주어야 한다.

fun addUp(a: Int, b: Int): Int{
    return (a+b)
}

#15 nullable

● nullable : 값 대신 null을 저장할 수 있는 변수를 nullable 변수라고 한다.

null : 값이 아니며, 값이 없는 상태를 나타낸다.

● 타입 뒤에 ?를 붙여 nullable로 선언할 수 있다.

var name: String = "Denis"
// name = null // 오류 발생

var nullableName: String? = "Denis"
nullableName = null // 정상작동

//nullableName이 null이 아닐 경우에만 let 뒤의 코드를 실행
var len = nullableName?.length
nullableName?.let { println(it.length) }

 

* 엘비스 연산자(?:)

엘비스 연산자(?:) : nullable 변수 ?: default는 nullable 변수에 null이 들어있다면 ?: 뒤의 값을, nul이 들어있지 않다면 nullable 변수에 들어있는 값을 반환하는 연산자이다.

var nullableName : String? = null
val name = nullableName ?: "Guest"

위 코드의 경우 nullableName에 null이 들어있으므로 name에는 "Guest"가 할당된다.

* Not Null(!!)

Not Null(!!) : Not Null은 nullable변수에 값이 반드시 있다고 단정할 수 있을 때 사용한다.

var nullableName : String? = null
nullableName!!.toLowerCase()

위 코드의 경우 오류가 발생한다. Not Null은 null이 들어있을 경우 오류를 발생시키기 때문이다.