Java to Kotlin (3) - Type을 다루는 방법

이동명·2024년 6월 6일
0

kotlin

목록 보기
3/19
post-thumbnail

기본 타입

코틀린에서는 선언된 기본값을 보고 타입을 추론한다.


java 에서는 기본 타입간의 변환은 암시적으로 이루어질 수 있지만 kotlin에서는 기본 타입간의 변환은 명시적으로 이루어져야 한다.

예시를 보자면 ..

위의 java 코드는 int 타입의 값이 long 타입으로 암시적으로 변경되었습니다.

하지만 코틀린에선 가능하지 않습니다. 이를 해결하려면 어떻게 해야 할까요 ?

결론은 to변환타입()을 사용해야 합니다.

또한 변수가 nullable이라면 적절한 처리가 필요합니다.

예시를 보자면 ..

위의 number1은 null 이 들어올 수 있기 때문에 아래에서 바로 메소드콜을 할 수 없다. 따라서 safe call 과 elvis 연산자를 활용하여야 한다.

타입 캐스팅

기본 타입이 아닌 일반 타입은 어떨까요?

위의 java 코드는 객체 obj 를 받아서 만약 Person이라면 형변환 후 나이를 출력해주는 코드 입니다. 이 코드를 kotlin으로 변환 해보겠습니다.

위의 코드처럼 변환 할 수 있습니다.

또한 as Person 구문은 생략될 수 있습니다. 코틀린 컴파일러가 if에서 타입체크를 한번 해줬기 때문에 해당 타입으로 간주될 수 있겠구나 하고 구문을 생략할 수 있는 스마트 캐스트가 존재합니다.

또한 is 의 부정문으로 '!' 기호를 사용할 수 있다.

그리고 만약 obj에 null이 들어올 수 있다면? as 키워드 뒤에 '?' 키워드를 사용하면 된다. 만약 null 이 들어왔다면 해당 구문 전체가 null이 될 것이다.

koltin의 3가지 특이한 타입

Any

  • Java의 Object 역할. (모든 객체의 최상위 타입)

  • 모든 Primitive Type의 최상의 타입도 Any이다.

  • Any 자체로는 null을 포함할 수 없어 null을 포함하고 싶다면,
    Any?로 표현.

  • Any 에 equals / hashCode / toString 존재.

Unit

  • Unit은 Java의 void와 동일한 역할.

  • void와 다르게 Unit은 그 자체로 타입 인자로
    사용 가능하다.

  • 함수형 프로그래밍에서 Unit 은 단 하나의 인스턴스만 갖는 타입을
    의미. 즉, 코틀린의 Unit은 실제 존재하는 타입이라는 것을 표현

Nothing

  • Nothing은 함수가 정상적으로 끝나지 않았다는 사실을 표현하는
    역할

  • 무조건 예외를 반환하는 함수 / 무한 루프 함수 등

String Interpolation, String indexing

string 구문 편집 은 아래와 같이 변수사용을 한다.

또한 중괄호를 생략하면서 사용할 수 있는 방법도 존재함. (객체 속성까지는 접근불가)

""" 3개 키워드를 이용하여 자유로운 줄바꿈 등 문자 구문을 사용할 수 있음.

또한 자바에서 특정 문자를 가져올 때 아래와 같은 코드를 사용했다.

코틀린에선 아래와 같이 사용한다.


다음 포스팅에선 연산자에 대해 공부하며 포스팅 해보겠습니다.

profile
Web Developer

0개의 댓글