Kotlin 기본 타입

1. Numbers

  • 자바와 같이 long은 suffix로 L 또는 l을 붙인다
      val one = 1 // Int
      val threeBillion = 3000000000 // Long
      val oneLong = 1L // Long
      val oneByte: Byte = 1
    
  • Float와 Double
      val pi = 3.14 // 아무것도 사용하지 않으면 Double
      val e = 2.7182818284 // Double
      val eFloat = 2.7182818284f // f를 붙여서 사용하면 Float, actual value is 2.7182817
    
  • 자동 타입 변환에 대해서
      val x:Byte = 1  // 더 작은 타입인 Byte에 저장되어 있는 값을
      val y:Int = x   // 더 큰 타입인 Int에 저장하려고 하면 오류가 난다
    

2. Literal constants

  • Decimal : 123
  • Long : 123L
  • hex(16진수) : 0x0F
  • _ 언더스코어 지원 : 1_000_000_000
  • binary : 0b101010
  • 45919.toString(2) : 10진수 45919를 2진수로 변환

3. Explicit conversions

  • 서로 타입이 다른 Int와 Long의 값을 비교할 수 있는가?
    • 없다. 사이즈가 작은 타입을 큰 타입으로 변경해주어야 한다
      val x:Int = 10
      val y:Long = 100000000
      x == y // 비교할 수 없다
      
      x.toLong() == y // 이런식으로 직접 타입을 변경해서 사용해야 한다
      
  • 타입변환시 사용 가능한 메소드
    • toByte(): Byte
    • toShort(): Short
    • toInt(): Int
    • toLong(): Long
    • toFloat(): Float
    • toDouble(): Double
    • toChar(): Char
  • 하지만, 산술연산에서는 자동으로 타입 변환이 이루어진다
      val l = 1L + 3 // Long + Int => Long 정상으로 계산이 된다
    
  • bit 연산
    • shl(bits) – signed shift left
    • shr(bits) – signed shift right
    • ushr(bits) – unsigned shift right
    • and(bits) – bitwise and
    • or(bits) – bitwise or
    • xor(bits) – bitwise xor
    • inv() – bitwise inversion
      0b10000000.shl(1)
      // 결과 : 256
    

4. Characters

  • Characters문자는 바로 Number로 변경할 수 없다

5. Booleans

true, false, ||, &&, !

6. Arrays

    arrayOf(1,2,3,4,5) // 배열 생성하는 방법 1.
    val x = Array<Int>(10) {println(it); it*it} // 배열 생성하는 방법 2
    x[9] // 출력은 81

    arraysOfNulls<Int>(10) // 요소를 null으로 채워서 생성하는 방법
  • 다중 배열
      fun main() {
        val x = arrayOf(
              arrayOf(0,1,2),
              arrayOf(3,4,5),
              arrayOf(6,7,8)
          )
    
          println(x[0][0])    // 0
          println(x[2][1])    // 7
      }
    

7. Primitive type arrays

    val x: IntArray = intArrayOf(1, 2, 3)
    x[0] = x[1] + x[2]

8. Strings

  fun main() {
    val s = "abc" + 1
    println(s + "def")  // 결과 : abc1def. 1을 toString()해서 연산한 결과로 보여준다
  }
  • data 라는 형식의 class를 정의해서 테스트 해 본 경우
      data class Data(val x:Int)
    
      fun main() {
          val str = "abc" + Data(100)
        println(str) // 결과 : abcData(x=100)
      }
    
  • triple quote(“””)

          fun main() {
            val str = """
            줄맞춤
            하는 역할을 하는 듯합니다.
            하하하
            """
            println(str)
        
            val text = """
            |Tell me and I forget.
            |Teach me and I remember.
            |Involve me and I learn.
            |(Benjamin Franklin)
            """
        
            println(text)
            println(text.trimMargin())
          }
        
      // 실행 결과
          줄맞춤
          하는 역할을 하는 듯합니다.
          하하하
            
          |Tell me and I forget.
          |Teach me and I remember.
          |Involve me and I learn.
          |(Benjamin Franklin)
            
      Tell me and I forget.
      Teach me and I remember.
      Involve me and I learn.
      (Benjamin Franklin)
    
  • $ 를 사용하는 방법
      fun main() {
        println("\$abc")         // $abc
        println("${'$'}abc")     // $abc
        println("${"$"}abc")     // $abc
      }
    

출처

  • Hyunsok Oh님의 [코틀린 기초] 2. 기본 타입 - 수타입, 불리언, 문자, 문자열, 배열 타입 : https://www.youtube.com/watch?v=aO-reo747Bc&t=1s
  • kotlin 레퍼런스 문서 : https://kotlinlang.org/docs/reference/basic-types.html