안드로이드 개발을 위한 기본적인 Kotlin 문법 정리.
기본적인 언어의 문법은 알고 있다는 가정 하에, Java와 다른 부분 위주로 정리
상수와 변수
val, var 두 가지로 상수와 변수를 정의한다. val : value, 변하지 않는 상수 var : variable, 변수
String template
Kotlin 에서는 String 표시중 $표시를 이용해 변수를 직접 이용할 수 있다.
println("my name is $name ")
println("my name is ${name}")
println("my name is ${firstname + lastname}")
println("is this true? ${1==0}")
조건식
if
java 와 거의 비슷, 일반적인 사용은 아래처럼
if( a > b ) {
return a
} else {
return b
}
(a>b)? a : b; 같은 표현은 kotlin 에서는 아래처럼 표현
if(a>b) a else b // (a>b)? a : b 와 동일.
when
java 의 switch 로 보면 된다.
기본적인 사용은 아래와 같다
when(score) {// 일반적인 사용, else 사용되지 않아도 상관없음
0 -> println("0")
1 -> println("1")
2,3 -> println("2 or 3")
else -> println("something else")
}
각각 값에 따라서 다른 부분으로 분기
아래 처럼 범위를 지정해 사용할 수도 있다
when(score) { // 범위를 지정하여 사용하는 경우
in 90..100 -> println("90 ~ 100")
in 10..90 -> println("10 ~ 90")
else -> println("otehr value")
}
중요 아래 처럼 값을 할당하는데 when 을 사용하는 경우, else 를 반드시 사용해야 한다.
var b = when(score){
1-> 1
2-> 2
else -> 3 // score 에 따라 값을 리턴하여 b 에 할당, else 없으면 에러
}
Expression & Statement
어떤 값을 생성하는것 = Expression 예를 들어 위에 when 을 이용해 값을 할당하는 경우에는 Expression, 아무것도 하지 않은 경우는 Statement Kotlin에서는 아무것도 하지 않는 경우도 Unit을 리턴하기 때문에 모든 함수는 기본적으로 Expression 자바에서는 Void 형이 존재하므로 Statement 함수 사용 가능. 자바에서는 if문이 Statement 로 밖에 사용되지 않는 반면 코틀린에서는 원하는 방향으로 사용 가능
Array, List
자바와 동일하게 Array는 사이즈 지정되어 있다
List 는 일반 ImmutableList 와 MutableList 로 구분
val array = arrayOf(1, 2, 3)
val list = listOf(1, 2, 3)
val array2 = arrayOf(1, "D", 3.4f)
val list2 = listOf(1, "D", 3L)
List는 값을 참조만 가능하고 변경은 불가능. 값 변경을 위해서는 Mutable list 사용해야 한다. Mutable list 의 하나가 ArrayList
val arayList = arrayListOf<Int>()
arrayList.add(10)
arrayList.add(20)
for, while
사용법은 아래와 같다
val students = arrayListOf("Alice", "James", "Roy") // 기본 arrayList 생성
for(name in students) { // 리스트 반복
println("${name}")
}
for((index, name) in students.withIndex()) { //index 와 value 를 함께 사용
println("${index}, ${name}")
}
for(i in 1..10) { // 1부터 10까지 반복
}
for( i in 1..10 step 2 ) { // 1부터 10까지 2씩 증가 (1, 3, 5, 7, 9)
}
for( i in 10 downTo 1 ){ // 10 부터 1 까지 반복
}
for( i in 1 until 10) { // 1 부터 9 까지 반복 (10 포함되지 않음)
}
var index = 0
while(index < 10) {
index++
}