val(value의 약자) :
선언할 데이터의 값이 변경되지 않을 경우 사용
java의 final특성, 선언 이후에 변수의 값을 바꿀 수 없다.
var(variable의 약자) :
선언할 데이터의 값이 변경될 수 있을 경우 사용
java의 일반 변수의 특성과 같음
const :상수,한 번 초기화하면 내부의 값을 사용할 수는 있지만, 바꿀 수는 없는 것(val과 같은 특성 하지만 불변성의 차이 존재)
java의 static final특성
읽기 전용 변수인 val앞에 const키워드를 붙여서 만듦
val과 읽기 전용인 것은 동일, 하지만 컴파일 시 값이 결정되기 때문에 Int,Double같은 기본형과 문자열인 String만 입력가능
선언해보자
//변수 선언 동시에 초기화->타입생략O
var myName="홍길동"
val age=22
//초기화 없이 변수 선언만->타입생략X
var myName:String
val age:Int
//상수
const val PI=3.141592
fun main() {
val num = sumExam(40, 20)
println(num)
}
fun sumExam(a: Int, b: Int) = a + b
fun main() {
println(ExamClass.CONST_VAL)
}
class ExamClass(){
companion object{
const val CONST_VAL = 100
}
}
val name:String
if(isName()){
name="홍길동"
}else{
name="전지현"
}
fun main(args: Array<String>) {
val myArray = arrayListOf("java")
myArray.add("파이썬")
}
var name="홍길동"
//name=22 불가능
참고
https://hongku.tistory.com/342
https://angangmoddi.tistory.com/201