Kotlin 기본[1] - 자료형 / 자료형 변환 / 스마트 캐스트

하동혁 ·2023년 3월 26일
0

Kotlin

목록 보기
1/10
post-thumbnail

Kotlin

  • 코틀린은 JetBrains에서 개발하고 보급.
  • 자바와 달리 문장 끝에 세미콜론(;)은 옵션
  • Google IO 2017에서 Android 공식 언어로 추가 발표
  • 변수는 Nullable과 NotNull로 나뉨

코틀린의 장점

  1. 자료형에 대한 오류를 미리 잡을 수 있음 (컴파일러가 타입을 검증한다.)
  2. 자바와 비교했을때 NullPointer Exception에서 비교적 자유로움
  3. 데이터형 선언 시 Null 가능한 형식과 불가능한 형식 지원
  4. 자바와 완벽하게 상호호환됨
  5. 자바와 비교했을 때 간결하고 효율적인 프로그래밍이 가능
  6. 함수형 프로그래밍과 객체 지향 프로그래밍이 모두 가능
  7. 세미콜론 생략 가능

 

참고

  • 코틀린은 JVM위에서 동작한다.
  • 자바는 class안에 main 메서드를 선언해야 한다. 하지만 코틀린은 class없이 main 메서드 생성, 실행이 가능하다.
  • Android Studio에서 Tools > Kotlin > Show Kotlin ByteCode를 선택 Decomplie을 하면 코틀린 파일을 java class로 확인할 수 있다.

 


▪️ 자료형

코틀린 원시 타입 종류 정리

  • 정수 타입: Byte, Short, Int, Long
  • 부동 소수점 수 타입: Float, Double
  • 문자 타입: Char
  • 불리언 타입: Boolean

 

코틀린의 자료형은 모두 대문자로 시작한다.

코틀린의 모든 데이터는 reference data type으로 컴파일 후 내부적으로 primitive type으로 동작한다.

  • primitive type인 byte, short, int 등은 직접 사용하지 못한다.

 

▪️ 변수

  • val(value) : 불변형 (immutable)
  • var(variable) : 가변형 (mutable)

 

▪️ 자료형 변환

  • 코틀린의 기본 자료형은 모두 객체이다.
    자료형 변환 메소드를 사용해야 형변환이 가능하다.
    val a:Byte = 5.toByte() //Byte
    val b = 65.toChar() //Char
    val c = 10.toShort() //Short
    val d = 10  //Int
    val e = 10L //Long
    val f = 10.0f //Float
    val g = 10.0 //Double

예시와 같이 코틀린은 변수 선언시 자료형을 별도로 선언하지 않아도 값을 보고 유추한다.

▪️ 자료형 변환 메서드 종류

 

▪️ 표현식에서 자료형의 자동 변환

val num = 1L + 3 // num은 Long타입 

 

String의 경우 여러 줄을 사용하고자 한다면 다음과 같이 사용할 수 있다.

    val str = """
		코틀린 공부
        파이팅!!
        """.trimIndent()

 

▪️ 문자열 비교

자바와 달리 코틀린은 "==" 연산자로 문자열 비교가 가능하다.

 

▪️ 문자열에 변수 넣기

    val num1 = 100
    val str1 = "abc $num1" // abc 100
    val str3 ="abc $num1.toString()" // abc 100.toString
    val str4 ="abc ${num1.toString()}" // abc 100

 

▪️ 스마트 캐스트

구체적으로 명시되지 않은 자료형을 자동 변환 해준다.
( = 값에 따라 자료형을 결정 )

    var cast:Number = 6.2 // cast 은 Double형으로 스마트캐스팅됨.
    println("value : $cast , data type: ${cast.javaClass}")
    cast = 12 //Integer 형으로 스마트캐스트
    println("value : $cast , data type: ${cast.javaClass}")
    cast = 12L //Long 형으로 스마트캐스트
    println("value : $cast , data type: ${cast.javaClass}")
    cast += 12.0f //Float형으로 스마트캐스트
    println("value : $cast , data type: ${cast.javaClass}")

 

▪️ is 키워드를 사용한 형 검사

    val num = 256
    if (num is Int) { // num이 Int형일 때
        print(num)
    } else if (num !is Int) { // num 이 Int형이 아닐 때, !(num is Int) 와 동일
        print("Not a Int")
    }

여기서 자바와 차이점이 있다.
자바는 instanceOf 메서드로 타입체크를 수행한 후 다시 타입에 맞게 casting을 해야 했다.
하지만 코틀린은 타입체크와 동시에 casting을 한 번에 수행한다.

    val string = "타입캐스팅 후 자동으로 형 변환"
    val temp:Any = string
    if(temp is String){
        println(temp) // 타입캐스팅 후 자동으로 형 변환
    }

 

▪️ 묵시적 형 변환

  • Any는 코틀린의 최상위 객체
  • 자료형이 정해지지 않은 경우 Any는 언제든 필요한 자료형을 자동 변환

 

0개의 댓글