Java to Kotlin (1) - 기본 변수사용

이동명·2024년 6월 2일
0

kotlin

목록 보기
1/19
post-thumbnail

개요

요새 시간이 날 때 마다 코틀린을 공부하고 싶은 마음이 생겨서 자바와 코틀린을 비교해면서 공부하면서 기록을 해보겠다.

변수를 다루는 방법

먼저 java 에서 long 과 final long 의 차이는 이 변수가 가변인지 불변인지를 판단한다.

해당 방법을 Kotlin 에서는 아래처럼 사용한다 .

가변 키워드인 var 는 재할당을 해주는 모습에서 에러나 나지 않지만 불변 키워드인 val에서는 에러가 나는 모습을 볼 수 있다.


또한 java에서는 type을 지정해주지만 kotlin 에서는 컴파일러가 자동으로 타입을 추론해주기 때문에 의무적으로 작성 하지 않아도 되지만, 아래처럼 명시적으로 작성도 가능하다.


변수에 초기값을 지정해주지 않는다면 ? 컴파일러가 추론할 타입을 모르기 때문에 타입까지 지정해줘야 에러가 나지 않는다.

또한 값을 아직 넣어주기 전 상태에서 프린트를 찍으면 에러가 나기 때문에 값을 할당해주고 사용해야 한다.

위의 var 키워드 밑에 그어진 경고 키워드는 var는 수정이 가능한 키워드이니 불변한 값을 할당 할 때는 val 키워드를 사용하는걸 추천한다는 멘트가 나온다.

따라서 모든 키워드를 val로 선언 후 꼭 필요한 부분만 var로 사용하면 클린한 코드가 될 것이다.


Primitive Type(원시타입)

java 에서 위의 두 변수의 차이는 무엇인가 ?

위의 변수는 Primitive Type(원시타입) 이고 아래변수는 Reference type(참조타입)으로 다르게 구분 되고 있다.

연산을 할 때 에도 불필요한 객체생성이 이루어지기 때문에 Reference type 은 지양하라고 각종 서적에 나와있다.

그렇다면 코틀린에서는 모두 Long인데 성능상 문제가 없는 것 인가 ?

그에 대한 답은 코틀린 공식문서에서 해답을 찾을 수 있다.

Some types can have a special internal representation - for
example, numbers, characters and booleans - can be
represented as primitive values at runtime - but to the user they
look like ordinary classes.

위의 변수를 보면 Long type하나로 합쳐져 있지만, 연산을 할 시 에는 코틀린에서 상황에 따라 내부적으로 Primitive Type 바꿔서 적절히 처리해준다 라고 기록되어 있다.

이 말을 증명하기 위해 자바소스로 디컴파일을 해보면 내부적으로 Primitive Type를 사용하는걸 알 수 있음


nullable변수

java 에서 Reference type 엔 null 이 들어 갈 수 있다. 이 부분은 코틀린에서 어떻게 처리될까 ?

코틀린에서는 java와 다르게 null 이 들어갈 수 있는 이라는 키워드를 아예 다르게 간주한다.

일단 기본적으로 모든 변수에는 null이 들어갈 수 없게끔 설계를 해놨다.

따라서 null 이 들어갈 수 있다는 키워드인 '?' 를 type뒤에 명시해야한다.


객체 인스턴스화

java 에서는 객체 인스턴스화를 위해서 new 키워드를 사용 합니다.

코틀린에서는 new 키워드를 사용하지 않습니다.


다음 포스팅에서는 코틀린에서 null 을 어떻게 다루는지에 대해 포스팅 해보겠습니다.

profile
Web Developer

0개의 댓글