필드와 변수
val은 불변 필드!
필드의 타입이 필드 뒤에 오고, 콜론(:)으로 구분한다
val name: String = "아린 Kim"
타입 추론으로 더 간단하게 구현하기
타입을 지정하면 코틀린이 추론한 타입과 내가 예상한 타입이 다른지 검사할 수 있기 때문에 타입을 지정하는 게 좋다.
val name2 = "아린 Kim"
var는 가변 필드!
코틀린은 초기화하지 않은 참조를 쓸 수 없게 막는다.
변수 선언 + 값 지정 으로 초기화 하기
var name3 = "아린 Kim"
name3 = "김아린"
변수 선언만 하고 사용하기
var name4: String
name4 = "김아린"
var 사용은 최대한 자제하는 것이 좋다.
참조 대상이 불변이면 프로그램을 추론하기 쉽기 때문
데이터 타입
Double : 64비트 실수
var doubleValue: Double
doubleValue = 3.141592
Float : 32비트 실수
var floatValue: Float
floatValue = 3.141592F
안드로이드 스튜디오는 Double과 Float를 구분하기 위해
Float 숫자 끝에 F를 붙인다
Int : 32비트 정수
var intValue: Int
intValue = 2147483647
intValue = 2_147_483_647
가독성을 높이기 위해 언더바(_)로 자릿수를 구분할 수 있다
컴퓨터는 앞의 값과 동일하게 인식한다
Long : 64비트 정수
var longValue: Long
longValue = 23L
Int와 Long을 구분하기 위해 Long 숫자 뒤에 L을 붙인다
Short : 16비트 정수
var shortValue: Short = 32_767
Byte : 8비트 정수
var byteValue: Byte = 127
Char : 1개의 문자, 외따옴표(')로 감싸서 저장
var charValue = "A"
타입 지정을 따로 안해도 따옴표 안에 하나의 글자만 지정하므로 Char형으로 저장된다
String : 여러 개의 문자
var stringValue: String = "ABC"
Boolean : true, false 두 가지 값
var booleanValue = true
늦은 초기화
null이 될 수 있는 타입과 null이 될 수 없는 타입을 구분하므로
null 값을 사용하여 초기화하기 보다는 늦은 초기화를 권장한다
var를 사용해야 한다면, null이 될 수 있는 참조를 사용해야 한다
var name: String? = null
name이라는 참조의 타입은 String이고, '?' 표기를 사용하여 name이 null 값을 가지도록 허용한다
어떤 경우든 초기화 한 후에 값이 절대 변하지 않더라도 참조 선언에 var를 사용해야 한다
var name2: String = "초기화_이전"
빈 문자열로 초기화되지 않은 참조를 표현했다
val의 늦은 초기화 -> by lazy
val name: String by lazy { getName() }
var의 늦은 초기화 -> lateinit
lateinit var name3: String
name = getName()
lateinit은 최초 사용 시에 초기화 되지 않지만, 어떤 면에서 by lazy와 같은 효과를 낸다
'개발일지' 카테고리의 다른 글
[Android] Fragment 생명주기(Life-Cycle) (0) | 2023.04.17 |
---|---|
[Android] Activity 생명주기(Life-Cycle) (0) | 2023.04.15 |
코틀린(Kotlin) 이모저모 공부[변수, 자료형, 형변환, 배열, 함수, 흐름제어, object] (0) | 2023.01.13 |
인터페이스(Interface)와 추상화(abstract) (0) | 2023.01.05 |
코드리뷰와 테스트 (0) | 2023.01.03 |