lateinit var 늦게 초기화
사용할때는 값이아니라 참조형태로 사용해야하기 때문에 this:: 또는 ::를 붙임
fun displayInfo() {
if(this::name.isInitialized) {
println("이름은: ${name} 입니다.")
println("나이는: ${age} 입니다.")
} else {
println("name변수를 초기화해주세요.")
}
}
상수는 lazy
fun main(){
var s1 = Student()
s1.name = "참새"
s1.displayInfo()
s1.age = 10
s1.displayInfo()
}
class Student {
lateinit var name:String
var age:Int = 0
val address: String by lazy {
println("address 초기화")
"seoul"
}
fun displayInfo() {
println("이름은: ${name} 입니다.")
println("나이는: ${age} 입니다.")
println("주소는: ${address} 입니다.")
}
}
프로그램이 메모리에 올라가서 실행될때 이를 프로세스 1개 라고 함
- 쓰레드는 프로세스보다 더 작은 단위
- 프로세스 안에서 더 작은 작업의 단위가 쓰레드
- 쓰레드는 생성되서 수행할때 각 독립된 메모리 영역인 STACK 을 가짐
- 즉 쓰레드를 한 개 생성하면 스택메모리의 일정 영역을 차지함
fun main() {
thread(start = true) {
for(i in 1..10) {
println("Thread1: 현재 숫자는 ${i}")
runBlocking {
launch {
delay(1000)
}
}
}
}
thread(start = true) {
for(i in 50..60) {
println("Thread2: 현재 숫자는 ${i}")
runBlocking {
launch {
delay(1000)
}
}
}
}
}
ArrayList<>() = a a.find{it == 찾고싶은거}
index custardList.forEachIndexed { index, custard -> println("${index + 1}. ${custard.info}") }
if (LocalTime.now() in LocalTime.of(23, 10)..LocalTime.of( 23, 20 )