Kotlin 기본 유형

Kotlin 프리미티브

  • Kotlin에서는 모든 것이 객체입니다. (널링 가능)
  • 멤버 함수나 모든 속성을 호출할 수 있다는 장점이 있습니다.

숫자

  • 거의 Java처럼 취급합니다.
  • Kotlin에서 Number는 클래스입니다. Java는 기본 유형에 직접 액세스할 수 없습니다.
  • Java의 숫자 유형인 char는 Kotlin의 숫자 유형이 아니라 문자 유형입니다.

묘사

  • Java 플랫폼을 사용할 때 숫자 유형은 기본 JVM 유형으로 저장됩니다.
  • Nullable 또는 Generic의 경우 boxing되어 객체로 사용됩니다.
  • 정체성은 복싱에서 보존되지 않습니다.
  • ‘===’는 같음과 같은 의미를 가집니다.
fun 숫자형() {
    // JVM Primitive
    var a: Int = 100
    print(a === a) // Prints True

    // Boxed
    var boxedA: Int? = a
    var anotherBoxedA: Int? = a
    println("==: ${boxedA == anotherBoxedA}") // Prints True
    println("===: ${boxedA === anotherBoxedA}") // Prints True
}

문자 그대로

  • 10진수: 123(Int, Short)
  • 긴: 123L
  • 복식: 123.5, 123.5e10
  • 수영 선수: 123.5f
  • 바이너리: 0b00001011
  • 8진수: 지원되지 않음( Java : int l = 017; )
  • 16진수: 0X0F

  • 문자열은 String 클래스로 표현됩니다.
  • 문자열은 문자로 구성됩니다.
  • 따라서 s(i)와 같은 방식으로 접근할 수 있다. (불변이므로 변경할 수 없음)
fun 문자열() {
    var x: String = "Kotlin"
    println(x.get(0))
    println(x(0))
    println(x.length)

    for (c in x) {
        println(c)
    }
}

문자

  • Char는 숫자로 취급되지 않습니다.
  • if 조건문에서 ‘1’을 숫자 1로 바꾸면 컴파일 자체가 되지 않습니다.
fun 문자(c: Char): Any {
    return if (c is Char) {
        c
    } else {
        print("숫자가 아닙니다")
    }
}

숫자 리터럴의 밑줄(1.1부터)

fun Literal_언더스코어() {
    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
}

명시적 변환

  • 더 작은 유형은 더 큰 유형의 하위 유형이 아닙니다.
  • 작은 유형에서 큰 유형으로의 매핑은 불가능하며 명시적 변환이 필요합니다.
  • + ( Byte | Short | Int | Long | Float | Double | Char )로 명시적으로 캐스트를 만들어 봅시다.
fun Explicit_Conversions() {
    val a: Int = 1 // A boxed Int
//    val b: Long = a // 오류

    val b: Long = a.toLong()
//    println(a == b) // 오류

    val i: Int = b.toInt() // OK, 명시적 형변환을 해주어야 함
}

정렬

  • 어레이 팩토리 기능을 사용하여 어레이를 생성할 수 있습니다.
  • arrayOf()와 같은 라이브러리 함수를 사용하여 생성됩니다.
fun 배열() {
    // 팩토리 함수 사용하여 배열 생성
    var array1 = Array(5, { i -> i.toString()})
    for (output in array1) {
        print(output)
    }

    // Of 라이브러리 함수 사용하여 배열 생성
    val array2 : Array<Int> = arrayOf(1,2,3,4,5)
    for (output in array2) {
        print(output)
    }

    val list : List<Int> = listOf(1,2,3,4,5)
    val arrayList : ArrayList<Int> = arrayListOf<Int>()

    array2(0) = 3
    list(1)
    arrayList.add(20)
}

특수 배열 클래스

  • 프리미티브 타격의 복싱 노력을 제거하기 위한 배치
  • IntArray, ShortArray, IntArray
  • Array를 확장하지 않지만 Array와 동일한 메서드 및 속성을 갖는 클래스입니다.
  • 크기와 같은 유용한 멤버 함수를 포함합니다.
fun 특별한배열() {
    val x: IntArray = intArrayOf(1,2,3)
    x(0) = 7
    println(x.get(0))
    println(x(0))
    println(x.size)
}