자료/자료형의 확인 및 변환
- 객체의 값 검사(==)
- 객체의 동일성 검사(===)
- 자료형 확인(is)
- 자료형 변환(as)
Java의 경우 객체의 값을 검사할 시 equals() 메서드를 사용하고, 동일성 검사는 반대로 ==를 사용한다.
자료형 확인 is 연산자의 경우 Java의 instanceOf와 동일하다.
자료형 변환의 경우 Java에서는 (자료형) variable과 같이 사용하지만, Kotlin에서는 variable as 자료형과 같이 사용한다.
흐름 제어
if-else 문
Java와 사용법은 동일하지만, Kotlin의 경우 값을 반환할 수 있다.
val age:Int = 20
val ageRange: String = if(age>=10 && age<20){
"10대"
} else if(age>=20 && age<30){
"20대"
} else if(...){
...
} else{
"기타"
}
when 문
Java의 switch의 역할을 하는 제어문이다.
val bags: Int = 1
when(bags){
0 -> Log.d(TAG, "We have no bags")
1,2 -> {
Log.i(TAG, "We have bags")
Log.d(TAG, "We have $bags bag(s)")
}
else -> Log.d(TAG, "Cannot have more bag")
}
when도 if-else와 비슷하게 값을 반환할 수 있다.
val bags: Int = 1
val bagString: String = when(bags){
0 -> "No bag"
1,2 -> "$bags bag(s)"
else -> "Cannot have more bags"
}
또한, Java와 달리 표현식을 사용할 수 잇다.
val str: String = ...
when(str){
str.startWith('a') -> Log.d(TAG,"A")
str.startWith('K') -> Log.d(TAG,"K")
}
for 문
Kotlin에서는 Java와 달리 for-each문만 지원한다.
val names: List<String> = ... //이름 리스트
//String으로 자동 타입 추론
for (name in names){
Log.d(TAG,name)
}
//index를 사용하는 경우
for (i in names.indicies){
Log.d(TAG,name[i])
}
범위(range: .., until, downTo, step)
범위는 Kotlin에만 존재하는 '자료구조'이다. 특정 범위를 순환하거나 해당 범위 내에 특정 항목이 포함되어 있는지를 확인할 수 있다.
val myRange: IntRange = 0..10 //0과 10을 포함한 0~10
val yourRange: IntRange = 0 until 11 //0은 포함, 11은 제외한 0~11
for(i in myRange)
//Do something
for(i in yourRange)
//Do something
for(i in 0..10)
//Do something
항목들의 순서가 반대로 정렬된 범위를 생성하려면 downTo(), step()을 활용한다.
//54321 출력
for (i in 5 downTo 1){
System.out.print(i)
}
//531 출력
for (i in 5 downTo 1 step 2){
System.out.print(i)
}
'안드로이드 > Kotlin' 카테고리의 다른 글
[Kotlin] 컬렉션(Collections) (3) | 2020.12.21 |
---|---|
[Kotlin] 위임(Delegation)과 초기화 지연(lazy initialization) (0) | 2020.12.20 |
[Kotlin] 람다 표현식(lambda expression) (0) | 2020.12.20 |
[Kotlin] 널 안정성(Null safety) (0) | 2020.12.20 |
[Kotlin] 개요, Java와의 차이점 1 (0) | 2020.12.14 |