기본타입
- 코틀린에서 모든 것은 객체
- why? 모든 것에 멤버 함수나 프로퍼티를 호출 가능
숫자(Numbers)
- java의 숫자형과 거의 비슷하게 처리
- 코틀린에서 number는 class, java의 primitive type에 직접 접근 불가
- char: 코틀린에서는 숫자형 X
리터럴(Literal)
- 10진수: 123(Int, Short)
- Long: 123L
- Double: 123.5, 123.5e10
- Float: 123.5f
- 2진수: 0b00001011
- 8진수: 미지원
- 16진수: 0X0F
Underscores in numeric literals
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
- Java플랫폼에서 숫자형은 JVM primitive type으로 저장됨
- Nullable이나 제네릭의 경우 박싱됨
※ 박싱(boxing): 기본형을 참조형으로 변환
- 박싱된 경우 identity를 유지하지 않음
Explicit Conversions
- 작은 타입은 큰 타입의 하위 타입 X
- 즉, 작은 타입에서 큰 타입으로의 대입이 안 됨
val a: Int = 1 //A boxed Int
val b: Long = a //오류
- 명시적으로 변환을 해주어야 한다.
val b: Long = a.toLong()
val i: Int = b.toInt()
문자(Characters)
- Char는 숫자로 취급되지 않음
배열
- Array클래스로 표현됨
- get, set([]연산자 오버로딩됨)
- size 등 유용한 멤버 함수 포함
var array: Array<String> = arrayOf("코틀린", "강좌")
println(array.get(0))
println(array[0])
println(array.size)
- 생성 방법
1. Array의 팩토리 함수 이용
2. arrayOf() 등의 라이브러리 함수 이용
val b = Array(5, {i -> i.toString()})
val a = arrayOf("0", "1", "2", "3", "4")
- 특별한 Array 클래스
· Primitive 타입의 박싱 오버헤드를 없애기 위한 배열
· IntArray, ShortArray, IntArray
· Array를 상속한 클래스들은 아니지만, Array와 같은 메소드와 프로퍼티를 가짐
· size 등 유용한 멤버 함수 포함
val x: IntArray = intArrayOf(1,2,3)
x[0] = 7
println(x.get(0))
println(x[0])
println(x.size)
문자열
- 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"): 전통적인 방식, Backslash를 사용하여 escaping 처리
- raw string("""Kotlin"""): escaping 처리 불필요, 개행이나 어떠한 문자 포함 가능
val s = "Hello, World!\n"
val s = """
"'이것은 코틀린의
raw String
입니다.'"
"""
'인문학도 개발일지 > 앱프로그래밍' 카테고리의 다른 글
[안드로이드][레이아웃] bottom navigation bar - android material로 기본 디자인 적용하기 (0) | 2020.04.24 |
---|---|
[코틀린 kotlin] 새차원의 코틀린 강좌 - 2. Basic Syntax (0) | 2020.04.16 |
[코틀린 kotlin] 새차원의 코틀린 강좌 - 1. why kotlin (0) | 2020.04.15 |
[안드로이드][코틀린] 하단 네비게이션바(bottom navigation)-프래그먼트(fragment) 연결 (0) | 2020.03.28 |
[안드로이드][레이아웃] 하단바 커스텀 - bottom navigation (0) | 2020.03.27 |