val
vs var
val
value
의 약자!immutable
즉, 불변 변수final
특성과 유사val son = "myeongji"
son = "mm"
// val은 값을 재할당 할 수 없기에 에러가 난다
var
variable
의 약자!mutable
즉, 가변 변수var son = "mongmong"
son = "myeongji"
// var은 값을 재할당 할 수 있기에
pritnln(son) // 출력값 : myeongji 이 된다
→ 변수 선언 방법
// val 과 var 모두 같다.
val 변수명 : 타입 = 값
var 변수명 : 타입 = 값 // 참고로, 코틀린은 자동으로 변수 타입을 추론해주기에 **타입은 생략 가능**!
val
vs const val
val
final
특성과 유사val snack = "죠리퐁"
const val
static final
특성과 유사const val snack = Snack() // 불가능
const val PI = "3.1415" // 가
상수
: 한 번 초기화하면 내부의 값을 사용할 수는 있지만, 바꿀 수는 없는 것**
→ 상수화
: 프로그램에서 값이 변하지 않아야 하는 데이터 혹은 변수를 상수로 만드는 것!**
companion object
안에 선언되어야 함fun main() {
val introduce = Introduce()
introduce.printName() // 출력값 : SONMYEONGJI
}
Class Introduce {
fun printName() {
println(FAMILY_NAME, NAME)
}
companion object {
const val FAMILY_NAME= "SON"
const val NAME = "MYEONGJI"
}
}
가독성
: 상수의 이름을 통해서 코드를 이해하기 쉽게 해줌
재사용성
: 동일한 값으로 여러 군데에서 사용 가능
Class Baby {
fun realBaby() {
val sonBabyAge = DEFAULT_AGE
val kimBabyAge = DEFAULT_AGE
}
companion object {
const val DEFAULT_AGE = 0
}
유지보수성
: 값이 바뀐다면 상수에서만 바꾸면 돼서 유지보수에 용이
Class Baby {
fun realBaby() {
val sonBabyAge = DEFAULT_AGE
val kimBabyAge = DEFAULT_AGE
}
companion object {
const val DEFAULT_AGE = 4
}