Byte : 8비트Short : 16비트Int : 32비트Long : 64비트Float : 32비트Double : 64비트Kotlin은 표준 산술 연산을 지원하며, +, -, *, /, % 연산자가 제공된다.
정수끼리의 나눗셈은 항상 정수 결과를 반환한다. 소수 부분은 버려진다.
부동 소수점 값을 얻으려면 명시적으로 변환해야 한다.
val x = 5 / 2
println(x == 2) // true
val x = 5 / 2.toDouble()
println(x == 2.5) // true
양수만 표현할 수 있다.
UByte : 8비트UShort : 16비트UInt : 32비트Ulong : 64비트true, false 두 가지 값만 가질 수 있다.
Boolean|| : 논리합 (논리 OR)&& : 논리곱 (논리 AND)! : 부정 (논리 NOT)Lazy Evalutaion
||연산자는 첫 번째 피연산자가 true일 경우, 두 번째 피연산자를 평가하지 않는다.
&&연산자는 첫 번째 피연산자가 false일 경우, 두 번째 피연산자를 평가하지 않는다.
작은 따옴표(')로 감싸 사용한다.
Char큰 따옴표(")로 감싸 사용한다. 문자열 템플릿($)을 사용하여 변수나 표현식을 문자열 내에 쉽게 삽입할 수 있다.
String$ 기호로 변수나 표현식을 포함할 수 있다.
val name = "Kotlin"
println("Hello, $name!") // Hello, Kotlin!
String.format()을 사용해 포맷팅할 수 있다.
형식 지정자(%d, %f, %s 등)를 사용하여 문자열을 포맷한다.
val formattedNumber = String.format("%07d", 31416)
println(formattedNumber) // 0031416
일반적으로 배열 대신 컬렉션을 사용하는 것이 더 유연하고 효율적이다.
arrayOf() 함수 또는 Array 클래스 생성자를 사용하여 배열을 생성할 수 있다.
Array성능 최적화를 위해 원시 타입 배열(IntArray, DoubleArray 등)을 사용하여 boxing overhead를 방지할 수 있다.
Boxing overhead
기본 타입을 객체로 변환할 때 발생하는 성능 부담
기본 타입이 객체로 변환되는 과정을 boxing,
객체 타입이 기본 타입으로 변환하는 과정을 unboxing이라고 한다.
기본 타입 vs 객체 타입
기본 타입 :int,double
객체 타입 :Int?,Integer,Double
arrayOf()arrayOfNulls() : 지정된 크기의 배열을 생성한다. 모든 요소를 null로 초기화한다.emptyArray() : 지정된 타입의 빈 배열을 생성한다. 배열의 크기가 0이다.val simpleArray = arrayOf(1, 2, 3)
val initArray = Array(5) { i -> (i * i).toString() }
val intArray = IntArray(5) // [0, 0, 0, 0, 0]
val twoDArray = Array(2) { Array(2) { 0 } }
val threeDArray = Array(3) { Array(3) { Array(3) { 0 } } }
// 크기가 5인 Int? 타입의 배열 생성 (모든 요소가 null로 초기화됨)
val intArray = arrayOfNulls<Int>(5) // [null, null, null, null, null]
// 빈 String 배열 생성
val emptyStringArray = emptyArray<String>()
배열은 크기는 고정이지만, 요소는 수정할 수 있다.
인덱스를 사용해 접근하고 수정할 수 있다.
val simpleArray = arrayOf(1, 2, 3)
simpleArray[0] = 10
println(simpleArray[0]) // 10