굥뷰를 햡시댜
[Kotlin] Basic Types 본문
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의 타입 자체가 바뀌진 않음!
타입을 변환하는 함수 |
|
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