Kotlin에서 Type을 다루는 방법

김민우·2023년 5월 11일
0

kotlin

목록 보기
4/6
post-thumbnail

본 글은 자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)
을 보고 정리한 글입니다.


1. 기본 타입

  • 자바에서는 기본 타입간의 변환암시적으로 이루어질 수 있다.
  • 하지만 코틀린에서는 기본 타입간의 변환명시적으로 이루어진다!
int number1 = 4;
long number2 = number1;

자바에서는 큰 타입으로 암시적 변경이 가능하다.

val number1 = 4
val number2: Long = number1.toLong()

코틀린에서는 Type Mismatch가 일어나, to변환타입()을 사용해야 한다!

val number1: Int? = 4
val number2: Long = number1?.toLong() ?: 0L

변수가 nullable일 경우, NPE 방지를 위한 Safe Call과 Elvis 연산자를 활용한 처리


2. 타입 캐스팅

public static void PrintAge(Object obj) {
	if (obj instanceof Person) {
    	Person person = (Person) obj;
        System.out.println(person.getAge());
    }
fun printAgeIfPerson(obj: Any) {
	if (obj is Person) {
    	val person = obj as Person
        println(person.age)
    }

Kotlin에서 is는 instanceof와 같은 기능, as Person는 (Person) obj와 같은 의미이다!

fun printAgeIfPerson(obj: Any) {
	if (obj !is Person) {
        println(person.age)
    }

Kotlin에서 !is는 instanceof의 반대 기능(~가 아니라면)

fun printAgeIfPerson(obj: Any?) {
	val person = obj as? Person
    println(person?.age)
}

Kotlin에서 obj 객체가 nullable일 경우 처리 방법


3. Kotlin의 특이한 타입 3가지

Any

  • Any는 모든 객체의 최상위 타입
  • 모든 Primitive Type의 최상의 타입도 Any이다.
  • null을 포함하고 싶다면 Any?

Unit

  • Unit은 Java의 void와 동일한 역할
  • 함수형 프로그래밍에서, Unit은 단 하나의 인스턴스만 갖는 타입을 의미

Notihing

  • Nothing은 함수가 정상적으로 끝나지 않았다는 사실을 표현
  • 무조건 예외 변환 함수 / 무한 루프 함수

  1. 문자열 타입을 코틀린에서 쓰는 방법
  • Java에서는 String.formatStringBuilder를 사용하여 문자열을 동적으로 가공한다.
val person = Person("김민우", 23)
val log = "사람의 이름은 ${person.name} ..."

${변수}를 이용하면 값이 들어간다.

val withoutIndent = 
	"""
    	ABC
        123
        456
     """.trimIndent()

여러 줄의 문자열을 출력할때 큰 따옴표 세 개를 쓰면 편하게 가능!

val str = "ABCDE"
val ch = str[1]

Kotlin에서 문자열의 특정 문자 불러오기 가능!

profile
Backend Developer

0개의 댓글