굥뷰를 햡시댜

[Kotlin] Basic Types 본문

언어/Kotlin

[Kotlin] Basic Types

GodZ 2019. 4. 23. 23:04

1. 기본 타입

  • Kotlin에서는 모든 것에 멤버함수나 property를 호출 가능하다는 의미에서 모든 타입이 객체입니다.

 

2. 숫자

  • Java의 숫자형과 비슷하게 처리됩니다.
  • Kotlin에서 Number는 클래스 입니다. 따라서 Java의 primitive type(기본형)에 직접 접근할 수 없습니다.
  • Java에서 숫자형인 char가 Kotlin에서는 숫자형이 아닙니다.(문자형으로 처리)

 

3. Literal

  • 10진수 : 123 (Int, Short)
  • Long : 123L
  • Double : 123.5, 123.5e10
  • Float : 123.5f
  • 2진수 : 0b00001011
  • 8진수 : 미지원
  • 16진수 : 0X0F

4. Underscores in numeric literals 

  • ex) Underscore를 사용해서 수치를 표현
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

 

5. Representation

  • Java 플랫폼에서 숫자형은 JVM primitive type으로 저장됨
  • nullable이나 제네릭의 경우 박싱됨
  • 박싱된 경우 identity를 유지하지 않음
  • ex) 아래는 예제 코드입니다.
//identity를 유지하지 않을 경우
var a:Int = 10000	// -> 이 경우 그냥 Int 타입
var b:Int? = 10000	// -> 이 경우 Integer 타입의 객체

println("a === b : ${a === b}") //-> false 출력
/*---------------------------------------------------*/

var a:Int? = 10000
var b:Int? = 10000

println("a === b : ${a === b}") // -> true 출력

 

6. Explicit Conversions

  • 작은 타입은 큰 타입의 하위 타입이 아닙니다. -> (작은 타입에서 큰 타입으로의 대입 불가능)
  • ex) 예제 코드입니다.
val a:Int = 1
val b:Long = a	// -> 오류(작은 타입을 큰 타입에 대입해서)

val b:Long = a.toLong() // -> 이건 a를 Long 타입으로 바꿔줘서 가능!
println(a==b) // 오류! -> a.toLong()을 쓴다고 a의 타입 자체가 바뀌진 않음!
타입을 변환하는 함수
  • toByte(): Byte
  • toShort(): Short
  • toInt(): Int
  • toLong(): Long
  • toFloat(): Float
  • toDouble(): Double
  • toChar(): Char

 

7. 문자(Characters)

  • Char는 숫자로 취급되지 않음(문자로 취급)

8. 배열

  • 배열은 Array 클래스로 표현됨
  • get, set([] 연산자 오버로딩 됨) -> 배열의 첨자로 오버로딩해서 값에 접근 가능
  • size 등 유용한 멤버 함수 사용 가능
  • ex)
var array:Array<String> = arrayOf("코틀린", "강좌")
println(array.get(0))
println(array[0])
println(array.size)
//이런 식으로 사용 가능하다는 것만 알고 있으면됨!
  • 아래와 같은 방식으로도 배열을 만들 수 있음
val b = Array(5, {i->i.toString()})	//5는 배열의 크기

 

9. 특별한 Array 클래스

  • Primitive 타입의 박싱 오버헤드를 없애기 위한 배열
  • ex) IntArray, ShortArray....
  • Array를 상송한 클래스들은 아니지만, Array와 같은 메소드와 property를 가지고 있음
  • ex)
val x:IntArray = intArrayOf(1, 2, 3)
x[0] = 7
println(x.get(0)) // -> 7 출력
println(x[0])	  // -> 7 출력
println(x.size)	  // -> 3 출력

 

10. 문자열

  • 문자열은 String 클래스로 표현
  • String은 Characters로 구성됨 -> s[i]와 같은 방식으로 접근 가능, but immutable이므로 변경 불가
  • ex)
var x:String = "Kotlin"
println(x.get(0)) // -> K 출력
println(x[0])	  // -> K 출력
println(x.length) // -> 6 출력

for(c in x) {
	println(c)
}
/*
K
o
t
l
i
n
출력*/

 

11. 문자열 Literal

  • escaped String -> '\'(Backslash)를 사용한다
val s = "Hello world!\n"
  • raw String -> 삼중 따옴표를 사용한다
val s = """
        "'이것은 코틀린의
        raw String
        입니다.'"
        """

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'언어 > Kotlin' 카테고리의 다른 글

[Kotlin] Inheritance  (0) 2019.04.24
[Kotlin] Class  (0) 2019.04.24
[Kotlin] Packages, Return and Jumps  (0) 2019.04.24
[Kotlin] Control Flow  (0) 2019.04.24
[Kotlin] Basic Syntax  (0) 2019.04.23
Comments