관리 메뉴

History

kotlin 변수와 함수_step1 본문

kotlin/kotlin 문법

kotlin 변수와 함수_step1

luckybee 2023. 3. 5. 18:46
728x90
반응형

-변수 선언하기

코틀린에서 변수는  val, var 키워드로 선언한다. 

val은 value의 줄임말로 초깃값이 할당되면 바꿀 수 없는 변수를 선언할 때 사용한다.
var은 variable의 줄임말로 초기값이 할당된 후에도 값을 바꿀 수 있는 변수를 선언할 때 사용한다.


다음 예시는 val과 var 키워드의 차이를 보여주는 예시이다.

val data1= 10
var data2= 10

fun main(){
data=20;  //오류
data2= 20;//성공

}

 

위에서 보이는 예시와 같이 val의 키워드는 main함수 안에서 값을 변경하려고 하면 오류가 생긴다.

-타입 지정과 타입 추론


변수명 뒤에는 콜론(:)을 추가해 타입을 명시할 수 있으며, 대입하는 값에 따라 타입을 유추할 수 있을 때는 생략할 수 있다. 

val data1 : Int=10
val data2= 10

 

위 소스에서 data1은 명시적으로 Int 타입을 선언한 것이며 data2는 대입한 값이 10이므로 타입을 명시하지 않아도 자동으로 Int 선언한 것과 같다.

-초기값 할당

최상위에 선언한 변수나 클래스의 멤버 변수는 선언과 동시에 초깃값을 할당해야 하며, 함수 내부에 선언한 변수는 선언과 동시에 초깃값을 할당하지 않아도 된다. 물론 변수를 이용하려면 값을 할당하고 이용해야 한다.

val data1 : Int //오류
val data2 =10 //성공

Class User {
	val data4: Int //오류
	val data5: Int =10 //성공
}

fun someFun(){
	val data3: Int
	println("data3: $data3") //오류
	data3=10
	println("data3: $data3") //성공

}

 

-초기화 미루기

 

변수를  선언할 때 초깃값을 할당할 수 없는 경우가 있다. 이때는 값을 이후에 할당할 것이라고 컴파일러에게 알려주어야 한다. 이때 lateinit나 lazy 키워드를 이용한다. lateinit키워드는 이후에 초깃값을 할당할 것임을 명시적으로 선언한다.

lateinit var data1: Init //오류
lateinit val data2: String //오류
lateinit var data3: String //성공


lateinit로 선언한 변수는 선언과 동시에 초깃값을 할당하지 않아도 되지만 모든 유형의 변수 선언에 사용할 수는 없으며 다음 2가지 규칙이 존재한다.

1: lateinit var 키워드로 선언한 변수에만 사용할 수 있습니다.
2: Int, Long, Double, Float, Boolean, Byte 타입에는 사용할 수 없습니다.

 


lazy 키워드는 변수 선언문 뒤에 by lazy {} 형식으로 선언하며, 소스에서 변수가 최초로 이용되는 순간 중괄호로 묶는 부분이 자동으로 실행되어 그 결괏값이 변수의 초깃값으로 할당된다. lazy 문의 중괄호 부분을 여러 줄로 작성한다면 마지막 줄의 실행 결과가 변수의 초기값이 된다.


아래는 예시이다.

val data4: Int by lazy{
	println("in lazy..")

	10
}

fun main(){
	println("in main..")
	println(data4+10)
	println(data4+10)
}

아래는 결과이다.

in main.. 
in lazy
20
20



728x90
반응형

'kotlin > kotlin 문법' 카테고리의 다른 글

kotlin 변수와 함수_step3  (0) 2023.03.05
kotlin 변수와 함수_step2  (0) 2023.03.05
kotlin 소개  (1) 2023.03.05
Comments