brunch

You can make anything
by writing

C.S.Lewis

by 서준수 Dec 04. 2017

코틀린(Kotlin) 변수 선언 방법

빠르게 살펴보기

코틀린(Kotlin) 변수 선언 방법


코틀린의 변수 선언 기본 형태


var/val 변수명: 변수타입 = 초기화

ex) var name: String = "name"



Java와 비교해보면


변수타입 변수명 = 초기화;

ex) String name = "name";


문법만 생소할 뿐 Java 또는 다른 프로그래밍 언어를 접해봤다면 변수타입은 기존 언어와 별반 차이가 없어서 쉽게 사용할 수 있습니다.


var / val 키워드

앞서 살펴본 키워드 중 생소한 부분은 var/val 키워드 일 것입니다. 간략히 정리하면 다음과 같습니다.


var = variable = 읽기/쓰기가 가능한 일반 변수

val = valuable = 읽기만 가능한 final 변



이 역시 Java의 final 변수에 대한 개념을 알면 금방 이해할 수 있습니다. 

var로 선언하면 변수의 값을 변경할 수 있습니다. 이러한 변수를 가변 변수라고 부릅니다. 반대로 val을 선언한 변수는 값을 변경할 수 없고 불변 변수라고 부릅니다.


fun main(args: Array<String>) {

var name:String = “name”

val address:String = “seoul”

println(“name = $name”)

name = “kotlin”

//address = “busan” 불변 변수이므로 값 변경 안됨

println(“name = $name”)

}


위 예제와 같이 var로 선언한 가변 변수인 name은 새로운 값으로 할당이 가능합니다. 하지만 불변 변수인 address는 새로운 값을 할당할 수 없습니다.


Non-Null / Nullable

특이한 점은 코틀린에서는 Non-null 타입과 Nullable 타입이 존재합니다.

null을 값으로 가질 수 있으면 Nullable, null을 값으로 가질 수 없으면 Non-null 타입입니다.


var name: String = null // 에러


얼핏 보면 이상할 것이 없는 위 코드는 에러가 발생합니다. 그 이유는 해당 String 변수는 Non-null 타입이기 때문입니다. Non-null 타입은 앞서 말했듯이 null을 값으로 가질 수 없습니다.


Nullable로 선언하는 방법은 다음과 같습니다.


 var name: String? = null


Nullable String 변수를 선언하려면 위와 같이 변수타입 뒤에 ?를 꼭 붙여야 합니다.


안전 호출 연산자

Nullable 타입은 사용 시 안전 호출 연산자인 ?. 을 통해 안전 호출을 합니다.

안전 호출 연산자의 역할은 호출하는 객체의 null 여부를 판별해 null이 아니면 속성을 참조하거나 메서드를 호출합니다. 만약 null이라면 null을 리턴합니다.


fun main(args: Array<String>) {

    val firstName: String? = null

    val lastName: String = "Seo" 

print("${firstName?.length}, ${lastName?.length}")

}


(위와 같이 Non-Null 타입도 안전 호출 연산자를 쓸 수 있지만 유의미하지 않습니다.)


예를 들어 firstName?.length를 자바로 표현하면 다음과 같습니다.


if (firstname != null) {

    firstname.length();

} else {

    null;

}



변수 출력하는 방법


코틀린


 println("텍스트 $변수")



Java


 System.out.println("텍스트 " + 변수);


$를 출력하고 싶으면 $$로 하면 되겠죠?


이제 변수 선언하는 방법을 알기 때문에 변수 타입을 Int, Long 등으로 변형해서 다양하게 사용할 수 있습니다.


fun main(args: Array<String>) {

    var language: String = "Kotlin" // Java => String language = "Kotlin";

    var version = "1.1.51" // 자동 유추 : String

    println("language $language") // System.out.println("language " + language);

    println("version $version")


    //var empty: String = null // Non-null 타입은 null을 값으로 가질 수 없음

    var empty: String? = null // null 타입으로 선언하기 위한 키워드로 물음표 사용

    println("empty : ${empty?.length}") // null check 필수

    empty = "ABC"

    println("empty : ${empty.length}") // null check 안 해도 가능

    println("empty : ${empty?.length}") // null check을 해주는 것이 좋음


    val ch10 = 10 // Java => final int ch10 = 10;

    // ch10 = 9 // val cannot reassigned

    val WIFI_STATE: String = "WIFI_STATE" // final String WIFI_STATE = "WIFI_STATE";

}


language Kotlin

version 1.1.51

empty : null

empty : 3

empty : 3


이전 01화 코틀린(Kotlin) 개발 환경 구축
brunch book
$magazine.title

현재 글은 이 브런치북에
소속되어 있습니다.

작품 선택

키워드 선택 0 / 3 0

댓글여부

afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari