
선언
var 변수이름 : 자료형
val 변수이름 : 자료형
할당
변수이름[:자료형] = 값
// [ ] 생략 가능
초기화
var 변수이름 [: 자료형] = 값
val 변수이름 [: 자료형] = 값
// [ ] 생략 가능
자료형 추론 (Type Inference)
val name:String = "애플망고"
val age:Int = 10
변경 가능한 변수
var 키워드 : 값이 바뀌거나 다시 할당될 가능성이 있을 때 사용한다.var name = "애플망고"
name = "포도"
// name = 100 (X)
변경할 수 없는 변수 (read-only variable)
val 키워드 : 최초로 지정한 변수의 값에서 변경될 수 없다. val name:String
name = "애플망고"
// name = "망고" (X)
상수
val 변수는 값을 변경할 수 없다는 것에서 상수처럼 보이지만, 런타임 때 값이 확정되기 때문에 상수가 아니다. const val NAME:String = "애플망고"
const 키워드를 val 앞에 붙여서 상수를 사용한다.const val은 반드시 초기화까지 해야 사용할 수 있다.참조 자료형 (Reference Type)
null 넣는 걸 허용하지 않는다. 정수형
val a:Byte = 10
val b:Short = -1
val c: Int = 0b1010 // 2진수 10
val d: Int = 10 // 10진수 10
val e:Int = 0xA // 16진수 10
val f:Int = 1_000_000
val g:Long = 1_000_000_000_000L
실수 자료형
val a:Double = 0.1
val b:Double = .1
val c:Double = 1e-1 // 1 x 10^-1
val d:Double = 1e1 // 1 x -10^-1
Double 자료형을 생략했을 땐, Float으로 추론하지 않고 Double로 추론한다.문자형
val a:Char = 'A'
val b: Char = 65.toChar()
val c:Int = 'A'.code
65를 참조하여 toChar()함수를 호출해서 사용해야 한다.A의 code라는 필드 (property)에 접근하여 사용할 수 있다.문자열
val a:String = "여러 글자"
val b:String = """
여러줄의
문자
"""
논리형
val isKotlinFun: Boolean = true
val isKotlinDifficult: Boolean = false
Null 허용형 (Nullable Type)
val name: String = null // 불가
var nickname:String = "노란망고"
nickname = null // 불가
val age:Int? = null // null 허용
age = 10
Int 타입과 Int? 타입은 다르다. val age:Int? = null
val amount :Int = 10
age = amount // 가능
val age:Int? = null
age = 10
val amount:Int = age // 불가능
val a :Int? = 10 // Int로 인지한다.
Int? 변수를 Int 에 할당하는 것 불가능Int 변수를 Int?에 할당하는 것은 가능
val NAME = "망고"
var AGE = 10
fun main() {
println(NAME) // 망고
println(AGE) // 10
AGE = 20
println(AGE) // 20
}
const val URL = "jdbc:mysql://localhost:3306"
fun genValue():String {
return "Hello World!"
}
val V_1 :String = genValue()
const val V_2:String = "Hello World!"
URL 은 상수이다.val 키워드로 값이 변하지 않는다.V_1도 상수처럼 보인다. 하지만, 함수가 호출되는 시점이 런타임이기 때문에 값이 런타임에 확정된다. 때문에 상수가 아니다.// val a = 10l (x)
val a = 10L
var b = .1f
b = .1F
Long 타입에서 소문자를 인정해주지 않는다.val desc: String = """
달콤하고 맛있는 노란색 망고
오늘도 먹고 내일도 먹고
라이즈 대박 너무 잘생김 헉
""".trimIndent()
println(desc)
trimIndent() 함수를 통해 들여쓰기를 없앨 수 있다.// 문자열 템플릿
// 1. $변수명
val favorite: String = "Favorite $name"
println("favorite = $favorite")
// 2. ${표현식}
val number: Int = 20
val sentence1 = "nu${number}mber"
println("sentence1 = ${sentence1}")
val price: Int = 20
val amount = 10
val sentence2 = "총 금액은 = ${price * amount}원입니다."
println(sentence2)
$변수명 으로 나타낼 수 있다. 하지만, 뒤에 띄어쓰기 없이 문자열이 붙으면 안된다는 점을 유의해야 한다.${표현식}으로 나타내면, 띄어쓰기 없이도 문자열을 나타낼 수 있다.벌써 2차 프로젝트를 !! 끝내고 다시 수업으로 돌아왔다. 2차까지 잘 끝내고나니까 기분이 후련하다 ! 1,2차 프로젝트 회고를 써야 하는데..ㅎ 자꾸 미루네 증신차려! 앞으로 코틀린도 잘 배워봐야겠다 !
파이팅 !