Kotlin - Basic Types

spring

코틀린 - Basic Types

자바에서는 primitive Type, Reference Type이 있다
하지만 코틀린은 Basic Type 하나로 설명이 가능하다.

- 코틀린에서 모든것은 객체임
- 모든 것에 멤버 함수나 프로퍼티를 호출 가능하다는 의미

숫자

- Java의 숫자형과 거의 비슷하게 처리
- Kotlin에서 Number는 클래스임, java의 primitive type에 직접 접근할 수 없음.
- Java에서 숫자형이던 char가 kotlin에서는 숫자형이 아님.

Double,Float,Long,Int,Short,Byte 를 이용하여 사용가능


-리터럴
    - 10진수 : 123(Int,Short)
    - Long : 123L
    - Double : 123.5 , 123.5e10
    - Float : 123.5f
    - 2진수 : 0b00001011
    - 8진수 : 미지원(Java: int i = 017;)
    - 16진수 : 0X0F

- 언더스코어를 이용하여 수치 표현
    - val oneMillion = 1_000_000
    - val creditCardNumber = 1234_5678_9012_3456L
    - val socialSecurityNumber = 999_99_9999L
    - val hexBytes = 0xFF_EC_DE_5E
    - val bytes = 0b11010010_01101001_10010100_10010010

등등

Representation

fun main(args: Array<String>) {
    // Java 플랫폼에서 숫자형은 JVM primitive type으로 저장됨
    // Nullable이나 제네릭의 경우에는 박싱됨
    // 박싱된 경우 identity를 유지하지 않음.
    var a : Int = 10000
    var b : Int? = 10000

    println("a===b: ${a===b}")
    println("a==b: ${a==b}")

}

// a는 primitive , b는 object임. Tools - kotlin - show bytecode 후에 decompile하면 자바코드를 얻어낼 수 있음

Explicit Conversions

-작은 타입은 큰 타입의 하위 타입이 아님, 즉 작은 타입에서 큰 타입으로의 대입이 안됨
    val a : Int = 1 // A boxed Int
    // val b: Long = a // 오류
    val: Long = a.toLong()
    //println(a==b) // 오류

- 명시적으로 변환해줘야함

    val i : Int = b.toInt() // OK # 문자

- Char는 숫자로 취급되지 않음

    fun check(c:Char) {
        if(c == 1) {~~~} // ERROR
    }

    fun check(c:Char) {
        if(c == 'a') {~~~} // OK
    }
    print('0'.toInt()) // 48

배열

- 배열은 Array 클래스로 표현됨
- get,set ([] 연산자 오버로딩 됨)
- size 등 유용한 멤버함수 포함

    var array:Array<String> = arrayOf("코틀린","강좌")

    println(array.get(0))
    println(array[0])
    println(array.size)

배열 생성 방법

- Array의 팩토리 함수를 이용
- arrayOf() 등의 라이브러리 함수 이용

val b = Array(5, {i -> i.toString()}) // array 팩토리 함수

val a = arrayOf("0","1","2","3","4") // 라이브러리 함수

특별한 Array 클래스

- Primitive의 타입의 박싱 오버헤드를 없애기 위한 배열
- IntArray,ShortArray,IntArray
- Array를 상속한 클래스들은 아니지만, Array와 같은 메소드와 프로퍼티를 가짐
- Size 등 유용한 멤버 함수 포함

val x: IntArray = intArrayOf(1,2,3)
println(x.size)
println(x[0])
println(x.get(0))

문자열

- 문자열은 String 클래스로 표현
- String은 characters로 구성됨
- s[i]와 같은 방식으로 접근 가능(immutable이므로 변경 불가)

var x: String = "Kotlin"
println(x.get(0))
println(x[0])
println(x.length)

for(c in x) println(c)

문자열 리터럴

- escaped string("Kotlin")
    - 전통적인 방식으로 Java String과 거의 비슷
    - Backslash를 이용하여 escaping 처리

- raw string("""Kotlin""")
    - escaping 처리 필요 없음
    - 개행이나 어떠한 문자 포함가능

    var s = "Hello World!\n"
    val t = """
        "'이것은 코틀린의
        raw String 입니다.'"
    """
    println(s)
    println(t)
효준's profile image

효준

2018-09-01 11:30

다른글 보러가기

코틀린 시작하기 & Basic Syntax

이전 포스트

Kotlin - Control Flow

다음 포스트