val a = 5.toByte() // Byte
val b = 65.toChar() // Char
val c = 10.toShort() // Short
val d = 10 // 정수 기본 자료형 Int
val e = 10L // Long
val f = 10.0f // Float
val g = 10.0 // 실수 기본 자료형 double
var ch = '\uAC00'
print(ch) // 가
val str = """
Ssafy 여러분
모두 화이팅!
""".trimIndent()
val str1 = "안녕"
val str2 = "하세요"
println(str1+str2) // 안녕하세요
val a = 20
println("저는 $a 살 입니다.") //저는 20 살 입니다.
println("저는 ${a}살 입니다.") // 저는 20살 입니다.
typealias Num = Int
fun main() {
val num: Num = 10
println(num) // 10
}
arrayOf( )
배열의 생성과 초기화를 함께 수행 (컴파일러가 자료형 유추 가능하면 이를 생략)
배열의 요소에 접근하려면 [ ] 대괄호를 사용
fun main() {
val num : Array<Int> = arrayOf(1,2,3,4)
val num2 = arrayOf(5,'a',"hi!",8)
println(num[0]) // 1
println(num2[1]) // a
println(num2[2]) // hi!
}
num처럼 선언하면 Int형이 아닌 값들을 넣으면 오류가 발생한다.
num2처럼 선언하면 어떤 값을 넣어도 오류가 나지 않는다.
Number - 숫자를 지정하기 위한 특수 자료형으로 스마트 캐스팅 됨
var test1:Number = 6.2 // Double로 스마트 캐스팅 됨
println(test1.javaClass) // class.java.lang.Double
test1 = 12
println(test1.javaClass) // class.java.lang.Integer
test1 = 12L
println(test1.javaClass) // class.java.lang.Long
test1 += 12.0f
println(test1.javaClass) // class.java.lang.Float
변수 is 자료형
val number = 256
if(number is Int){ //num이 Int형일 때
print(number)
}else if(number !is Int){ // number이 Int형이 아닐 때
print("Not a Int")
}
java에서는 instanceof를 하더라도 명시적으로 타입 캐스팅을 해야 하지만, 코틀린에서는 타입 체크와 동시에 자동으로 해줌
Ex) Int나 String은 Any 형의 자식 클래스
Any는 언제든 필요한 자료형을 자동 변환(스마트 캐스트)
var a:Any = 1
println(a.javaClass) // class.java.lang.Integer
a = 2L
println(a.javaClass) // class.java.lang.Long