첫 번째 변수
변수 선언
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을 할당해도 오류가 발생하지 않는 것을 확인할 수 있다.
