Android/Kotlin

[Kotlin] 문법정리

dev_zoe 2021. 1. 20. 21:20
반응형

Kotlin

코틀린은 자바와달리 ; (세미콜론)을 쓰지 않는다는것이 특징

코틀린 변수

var : 가변 변수

val : 불변 변수 (자바의 final과 동일)

ex) val a : Int = 7 ⇒ 불변변수 a의 타입은 int이고 초기값은 7

val b = 10; ⇒ 타입을 적지 않았으나 코틀린 컴파일러가 타입을 추론하여 정수 타입인 int로 처리함.

리플렉션(참조), 더블콜론(::)

리플렉션? 바이트코드를 이용해 내가 참조하려는 값을 찾기위해 사용하는 것

java에서, Someclass.class 라고 하면 class를 리턴하는 반면에 코틀린에서 Someclass::class라고 하면 KClass를 리턴하므로, 형 변환을 위해 Someclass::class.java 로 하여 자바 클래스를 받아야함

클래스는 물론 클래스 내에서의 메소드 또한 참조가 가능함.

변수의 값이 null일때의 처리

물음표(?) : 변수에 null값을 대입하고싶을 때

 

코틀린에서는 기본적으로 모든 타입에 null값을 허용하지 않음(default)

그래서, null값을 허용하고싶으면 타입 이름 끝에 물음표를 붙여야함

ex) val s1: String? = null ⇒ O

val s1: String = null ⇒ X : null값이 가능하다고 명시하지 않았기때문

 

"?." : 객체 참조가 null이 아닐때만 참조하게함.

 

println(a?.length) ==

if (a≠null) println(a.length)

 

"?:" (엘비스 연산자) :

 

왼쪽 피 연산자 값이 null이 아니면 그 피연사자의 결과 값(피연산자가 함수호출이면 함수의 결과값), null이면 오른쪽 피연산자의 결과값 반환

var b = a?.length ?: 0

⇒ var b = if (a ≠ null) a.length else 0

 

"!!"

변수의 값이 null이 아니면 정상 수행, 아니면 nullpointerexception 예외발생

 

as?

Type 변환(typecasting)

타입 변환에 부적합할 경우 null값 반환

 

반복문

for문에서 루프 반복횟수를 정하고자 할때 다음 방식으로 사용한다.

for (i in 1..100) {..}  //i가 1부터 시작하여 1씩 증가하며 100까지
for (i in 1 until 100) {..} //i가 1부터 시작하여 1씩 증가하며 100 전까지
for (i in 2..10 step 2) {..} //i가 2부터 시작하여 2씩 증가하며 10까지
for (i in 10 downTo 1) {..} //i가 10부터 시작하여 1씩 감소하며 1까지

 

반응형