공부했던 코틀린 정리내용
변수
변수 선언
val name:String = "김찬정" // 읽기만 가능
var age:String = 20 // 읽기/쓰기 가능
var address = "서울" // 타입생략이 가능
name = "홍길동" // 컴파일 오류
age = 20 // 가능
Null 허용 변수와 Null을 허용하지 않는 변수 선언
// null 값 허용 변수 선언
var name: String? = null
// null 값을 허용하지 않는 변수에 null을 선언 할 수 없다.
var age: Int = null
Null 체크
val name: String? = null
// name 이 null이 아니면 length 를 반환
// java 에서 Integer nameLength = name != null? name.length() : null; 같음
val nameLength = name?.length
// name 이 null 이면 NullPointerException 발생 시킨다.
val nameLength = name!!.length
// 타입케스팅이 불가능한 경우 예외를 발생시키지 않고 null 반환한다.
val age: Int? = name as? Int?
흐름제어
IF 표현식
// String msg = msgType == 1 ? "안녕" : "잘가"; 와 같다
val msg = if (msgType == 1) "안녕" else "잘가"
// 함수 선언 시 if를 아래와 같이 사용가능 하다
fun getMsg(msgType: Int) = if (msgType == 1) "안녕" else "잘가"
WHEN 표현식
val inputType = 2
val msgType = "2"
fun checkType(type: Int) = if (type == 1) 1 else -1
when (inputType) {
1 -> println("1")
2, 3 -> println("2 or 3")
else -> println("not")
}
// 조건에 함수를 적용할 수도 있다.
when (inputType) {
checkType(inputType) -> println("OK")
else -> println("NOT OK")
}
// 조건에 범위 연산자 사용도 가능하다.
// 1~100 에 포함된다면
val result = when (inputType) {
in 1..100 -> "1..100 OK"
else -> "NOT OK"
}
// 분기처리할 때 확인 대상이 되는 변수를 다르게 줄 수도 있다.
when {
inputString == "4" -> println("4 OK")
msgType == "2" -> println("msgType = 2")
}
FOR 반복문
val item = arrayOf(1, 2, 3)
val list = listOf(1, 2, 3)
for (index in item.indices) {
println(index)
}
for (index in list.indices) {
println(index)
}
// 1부터 100 까지 반복
for (i in 1..100) {
print("$i ")
}
// 1부터 99까지 반복
for (i in 1 until 100) {
print("$i ")
}
// 2 부터 10 까지 반복, 2씩 증가
for (i in 2..10 step 2) {
print("$i ")
}
// 10 부터 1 까지 감소
for (i in 10 downTo 1) {
print("$i ")
}
WHILE 반복문
val item = Array(5) { v -> v + 1 }
var index = 0
while (index < item.size) {
println(item[index])
index++
}