[Kotlin] 변수와 자료형

PUJIN·2023년 6월 4일
0
post-thumbnail

Raw string


"""문자열"""

여러줄의 문자열을 표현하는 경우 사용

  • 내부 들여쓰기나 줄바꿈 등 모든 문자 포함하여 출력
  • trimMargin() : 특정 문자 기준(기본값 : |)으로 공백 제거
    • () 안에 기준 문자(marginPrefix) 설정 가능
    println("동해물과 백두산이\n마르고 닳도록\n하느님이 보우하사\n우리나라 만세")
    
    println("""동해물과 백두산이
        마르고 닳도록
        하느님이 보우하사
        우리나라 만세""")

    println("""동해물과 백두산이
        |마르고 닳도록
        |하느님이 보우하사
        |우리나라 만세
    """.trimMargin())
    
       println("""동해물과 백두산이
        #마르고 닳도록
        #하느님이 보우하사
        #우리나라 만세
    """.trimMargin("#"))



변수


var/val 변수명 : 타입 = 값

  • val : 선언 이후 값 다시 저장 불가능
  • var : 선언 이후 값 다시 저장 불가능
    • 변수 선언 시 값 지정
    • 선언할 때 저장할 값을 지정해주면 클래스 타입 생략 가능
    • 타입 생략 시 저장하는 값에 따라 자료형(변수 타입) 자동 결정
var a1 = 100
val a2 = 100

a1 = 200
a2 = 200   // 에러



지연 초기화


property 정의할 때 값을 설정하지 않고 이를 지연시키는 것 (property 정의 시 값 설정 필수)

  • lateinit
    • var 프로퍼티에 사용 가능
    • val 변수는 setter가 생성되지 않아 오류 발생
    • 변수를 정의할 때 값을 저장하지 않아도 된다.
    • 변수의 값을 사용하기 전에는 반드시 초기화가 이루어져야 한다.
    • lateinit은 기본 자료형(Int, Double 등)에서는 사용 불가능
lateinit var a1:String

// 사용 전 반드시 값을 저장하였는지 확인해야 한다.
if(::a1.isInitialized) {
	println("a1 : $a1")
}
  • lazy
    • val 프로퍼티에 사용
    • 처리를 통해 val 프로퍼티에 저장할 값을 구하는 경우 lazy를 사용
      → 사용할 때 값을 초기화 한다는 의미
    • 코드 블록의 마지막에 작성한 값이나 변수의 값, 수식의 값을 프로퍼티에 저장
val a1:Int by lazy{
	val temp = 1 + 2 + 3 + 4 + 5
    temp
}
  • init 블럭
    • init 블럭 안에서 값을 저장한다면 프로퍼티를 정의할 때 값을 저장하지 않아도 된다.
var a1:Int
 
init{
	a1 = 100
}

0개의 댓글