자바 기반의 언어? 보통은 자바 하면 스프링 프레임워크가 생각이 나는데 코틀린+스프링 으로 코프링이란 말도 있어서 대체 Kotlin이 뭐길래 하고 기초적인것부터 접근을 해보았습니다.
문법과 언어의 사용패턴 공부를 목적으로 play.kotlin.lang 사이트에서 실습이 가능하다기에 이용해보았습니다.
java 를 할 줄 알면 kotlin 도 쉽게 배운다고 들었는데 코드가 짧아서 놀랬습니다, 세미콜론을 안붙여도 된다고 한다.
fun main() {
var a: Int
println(a);
}
Variable 'a' must be initialized a 라는 변수가 반드시 초기화 되어야 한다는 에러 발생
Kotlin은 고전적인 언어와 다르게 Kotlin은 기본 변수에서 null 을 허용하지 않는다.
변수에 값을 할당하지 않은채로 사용하면 문법에러를 표시하고 컴파일을 막아 NPE를 차단.
fun main() {
var a: Int = 123
println(a);
}
fun main() {
var a: Int
a = 123
println(a);
}
//123 출력
null을 허용하고 싶을 땐?
fun main() {
var a: Int? = null
println(a);
}
nullable 변수는 null 인상태로 연산시 NPE를 발생할 수 있으므로 사용시 주의 필요.
자바와 호환을 위해 자바와 거의 동일
Byte 8bits
Short 16bits
Int 32bits
Long 64bits
Float 32bits
Double 64bits
fun main() {
var intvalue:Int = 1234
var Longvalue:Long = 1234L
var intvalueByHex:Int = 0x1af //16진수
var intValueByBin:Int = 0b10110 //2잔슈
var doubleValue:Double = 123.5
var doubleValueWithExp:Double = 123.5e10
var floatValue:Float = 123.5f
}
8 진수 표기는 지원하지 않는다.
UTF - 16BE 로 관리, 글자 하나하나가 2byts 메모리 사용
var charvalue:Char = 'a'
var koreanCharValue:Char = '가'
var booleanValue:Boolean = true
val stringValue = "one line string test"
val multiLineStringValue = """multiLine
String
test """ //여러줄로 된 문자열
var a:Int = 54321
var b:Long = a.toLong() //명시적 형변환
코틀린에선 to 뒤에 변환 될 자료형을 붙인다. 암시적 형변환은 지원하지 않는다.
var intArr = arrayOf(1, 2, 3, 4, 5)
//arrayOf 함수를 통해 배열에 저장할 값들을 나열하면 됨.
var nullArr = arrayOfNulls<Int>(5)
//특정한 크기의 공간을 가진 비어있는 배열
intArr[2] = 8
//배열에 값을 할당, 사용
println(intArr[4])
자바와 유사하면서도 많이 다른느낌이다..