val data1:Int = 10
var data2:Int = 20
val : value 변경 불가능
var : variable 변경 가능
추론 가능한 타입은 생략 가능
val data1 = 10
최상위 혹은 클래스 멤버 변수는 초기값 할당이 필요하다. ( 함수 내부는 불필요 )
만약 나중에 할당하려면 lateinit
, lazy
키워드를 사용한다.
lateinit
은 var
과 사용하며, 기초타입 객체와는 사용할 수 없다.
lateinit var data3: String
lazy
는 by lazy{...}
로 사용한다. 최초 호출시 중괄호 부분 실행되어 마지막 줄이 값이 된다.
val data4: Int by lazy{
println("asdf")
10
}
Char 은 Number 비교 불가
String 삼중 따옴표 사용 가능
String 문자열 템플릿 사용 가능
$name
, ${sum(10)}
val data1: Any = 10
var data2 :Any ?= "asdf"
fun some() : Unit{
println(10)
}
fun some() {
println(10)
}
null 대입 가능 (?
)
var data2 : Int? = null
null 불허용
var data1 : Int = 10
함수 선언
fun some(data1: Int): Int{
return data1 * 2
}
Array
var arr2 = arrayOf<Int>(1,2,3)
val arr1 : Array<Int> = Array(3) { 0 }
뒤에 람다함수 부분은 따로 괄호로 빠짐
Collection Interface
가변 : MutableList, MutableSet, MutableMap
불변 : List, Set, Map