변수 선언
var
- 일반적으로 통용되는 변수
- 언제든지 읽기 쓰기가 가능
val
- 선언시에만 초기화 가능: 중간에 값을 변경할 수 없다. (runtime시 변경되지 않아야 되는 값은 안전하게 val로 선언)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
fun main() {
//정수형 (8진수 지원X)
var intValue: Int = 1234
var LongValue: Long = 1234L
var intValueByHex: Int = 0x1af //16진수
var intValueByBin: Int = 0b10110110 //2진수
var doubleValue: Double = 123.5
var doubleValueWithExp: Double=123.5e10
var floatValue: Float = 123.5f
//char: 1개 문자 - 2Byte
var charValue: Char = 'a'
var koreanCharValue: Char = '가'
//boolean
var booleanValue: Boolean = true
//String
var stringValue = "one line string test"
var multilineStringValue = '''multiline
string
test
'''
var stringV: String = "string"
}
Null 변수
- Kotlin은 기본 변수에서 null을 허용하지 않는다. 이는 변수가 선언된 후 초기화 되지 않으면 문법 에러를 표시하고 컴파일을 막아줘서 의도치 않은 동작이나 null pointer exception 등을 원천적으로 차단해 준다.
- var a: Int? = null (null 값을 허용하는 a)
자료형
형변환
- to + 바꾸고 싶은 자료형
- toByte(), toShort(), toInt(), toLong(), toFloat(), toDouble(), toChar()
- 명시적 형변환만 지원 (암시적 형변환 X)
1
2
3
4
fun main() {
var a: Int = 54321
var b: Long = a.toLong()
}
타입추론
- 변수나 함수들을 선언할 때나 연산이 이루어질 때, 자료형을 코드에 명시하지 않아도 코틀린이 자동으로 자료형을 추론해 주는 기능
- val A = “abc” (String 자료형 생략), var intArr = arrayOf(1,2,3,4,5)
- 코드량 줄일 수 있다.
- 기본 자료형들 선언 시 값을 할당해주면 대부분 자료형 명시할 필요 없다.
- var a = 1234: 일반 정수형 리터럴과 16진수, 2진수를 할당하면 Int
- 1234L은 Long, 12.45은 Double, 12.45f는 Float형으로 추론