[kotlin 문법] 변수와 데이터

첫 번째 변수

변수 선언

var 변수 이름: 유형 = 값
val 변수 이름: 유형 = 값

Kotlin의 변수는 var/val 키워드를 사용하여 선언됩니다.

키워드 var(변수).초기 값이 할당된 후에도 값이 변경될 수 있는 변수를 선언할 때 사용,

키워드 값(값).초기 값이 할당된 후 값을 변경할 수 없는 변수를 선언하는 데 사용됩니다.

간단히 말해서 var는 변수이고 val은 상수입니다.

var data1 = 10
val data2 = 20

fun main(){
    data1 = 30	
    data2 = 40	//오류발생
}

위의 경우 val 키워드로 선언된 변수인 data2에 초기값을 할당한 후 main() 함수에서 새로운 값을 할당해 보세요. 이 시점에서 컴파일 오류가 발생합니다. 반대로 var 키워드로 선언된 data1 변수에는 새 값이 올바르게 할당됩니다.

변수 유형 할당 및 초기화

변수 이름 뒤에 콜론(:)으로 유형을 지정하십시오.할수있다. 단, 할당 값에 따라 Kotlin에서 타입을 유추할 수 있다면 생략 가능하다.

Kotlin에서 최상위 변수와 클래스 멤버 변수는 선언과 동시에 초기화되어야 하며 함수 내부에 선언된 변수는 초기화할 필요가 없습니다.

//타입 지정
var data1: Int = 10
var data2 = 20	//타입 명시하지 않아도 정수 값에 의해 자동으로 Int타입으로 결정됨 

var str1: String = "hello"
var str2 = "world"	//마찬가지로 자동으로 String타입으로 결정됨


//초기화
var data3: Int	//초깃값 지정하지 않아서 컴파일 오류!
fun main(){
    var data4: Int	//초기화 안해도 오류 x
    println("data4: $data4")	//값이 할당된 상태 아니므로 컴파일 오류
    data4 = 40
    println("data4: $data4")	//값을 할당한 상태이므로 오류x
}

Class Test{
    val data5: Int	//클래스 멤버변수 초기화하지 않아서 컴파일 오류
    val data6: Int = 10
}

위 소스 코드의 초기화 부분에서 최상위 변수인 data3과 클래스 멤버 변수인 data5를 초기화하지 않으면 컴파일 오류가 발생하는 것을 확인할 수 있습니다. 반면 함수 내부의 지역 변수인 data4는 초기화를 하지 않아도 에러가 발생하지 않는다. 그러나 변수 값에 접근하기 위해서는 인쇄 과정에서 발생하는 오류로 인해 값을 할당해야 함을 알 수 있다.

지연 변수 초기화

변수를 선언과 동시에 초기화할 수 없는 경우 다음 두 키워드를 사용하여 초기화를 지연시킵니다.

-라틴어

  • latinit 키워드는 초기 값이 나중에 할당됨을 명시적으로 선언합니다.
  • var 키워드로 선언된 변수에만 사용할 수 있습니다.
  • Int, Long, Short, Double, Float, Boolean, Byte 유형에는 사용할 수 없습니다.

– 게으른

  • lazy 키워드는 변수 선언문 뒤에 lazy{} 형태로 선언되며, 중괄호로 묶인 부분은 해당 변수가 소스에서 처음 사용되면 자동으로 실행되고 결과 값이 이니셜로 할당됩니다. 변수의 값.
  • 중괄호를 여러 줄에 쓰면 마지막 줄의 실행 결과가 변수의 초기값이 됩니다.

//lateinit
lateinit val data1: Int		//컴파일 오류(Int타입)
lateinit var str1: String	//컴파일 오류(var키워드)
lateinit val str2: String


//lazy
var data4: Int by lazy{
    println("lazy")
    10
}

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

2. 데이터 유형

Kotlin의 모든 변수는 객체입니다.

기본 유형의 객체

정수는 Int, Short, Long, 실수는 Double과 Float, 이진수는 Byte, 부울은 True와 False입니다.

val obj1: Byte = 0b00001011
val obj2: Int = 1234
val obj3: Short = 123
val obj4: Long = 10L
val obj5: Double = 123.45
val obj6: Float = 123.45f
val obj7: Boolean = true

Long 데이터에는 값에 대문자 L이 추가되고 float 데이터에는 값에 대문자 F 또는 소문자 f가 추가됩니다.

Char는 단일 문자를 나타내는 데이터 유형이며 작은따옴표를 사용하여 표현됩니다.

문자열은 문자열을 나타내는 데이터 유형으로 큰따옴표 또는 세 개의 따옴표를 사용하여 표현됩니다.

스트링 브레이크 또는 노치를 나타냅니다.
큰 따옴표 삼중 따옴표
이스케이프 시퀀스 항목이 필요합니다. 키보드의 입력이 그대로 재생됩니다.

val c: Char="c"
val str1: String = "String1"
val str2: String = """
	Hello
    W o r l d
    !
"""

$ 기호는 문자열 데이터에 변수 값이나 연산식의 결과 값을 묶어야 할 때 사용합니다. 문자열 템플릿그것은 말한다.

val a = 10
val b = 20

println("a : $a, b : $b, a+b : ${a+b}")

이 코드는 문자열 템플릿을 사용하여 변수 값과 값의 합계를 인쇄합니다. 계산 식 또는 함수 호출 문은 대괄호 {}로 묶고 접두사가 붙은 문자열 템플릿이 추가됩니다.

어느

Any는 Kotlin의 최상위 클래스입니다. 따라서 변수가 임의의 유형으로 선언되면 모든 유형의 데이터를 변수에 할당할 수 있습니다.

val data1: Any = 10
val data2: Any = "hello"

class User
val data3: Any = User()

단위

단위 유형으로 선언된 변수는 단위 개체에만 할당할 수 있습니다. 주로 함수에 return 문이 없음을 명시적으로 나타내는 데 사용됩니다.

val data1: Unit = Unit

fun sum(): Unit{
	println(10+20)
}

함수 선언에서 반환 유형이 생략되면 기본적으로 단위 유형이 사용됩니다.

아무것도 아님

Nothing으로 선언된 변수에는 null만 할당할 수 있습니다.

항상 null을 리턴하는 함수이거나, 예외를 처리하는 함수의 리턴 타입이 Nothing으로 지정된 경우.

val data1: Nothing? = null

fun funcT1(): Nothing?{
	return null
}

fun funcT2(): Nothing{
	throw Exception()
}

당신을 허용하고 금지

Null은 개체가 선언만 되고 메모리가 할당되지 않음을 의미합니다. 모든 종류의 Kotlin은 객체이므로 변수에 null을 할당할 수 있습니다.

변수를 선언할 때 데이터 형식 뒤에 물음표를 지정하여 nullable 변수로 선언할 수 있습니다.

var data1: Int? = 10
var data2: Double = null	#컴파일 에러
var str1: String? = "Kotlin"

data1 = null
str1 = null

위 코드를 실행하면 data2 변수 선언 부분에서 컴파일 오류가 발생한다. 그 이후? 데이터 유형 뒤에 추가되지 않으면 null 값이 할당되기 때문에 null을 허용하지 않는 문자입니다. nullable 문자로 선언된 data1, str1에 null을 할당해도 오류가 발생하지 않는 것을 확인할 수 있다.