Files
kotlin-examples/Writerside/topics/Type.md
2024-06-21 15:01:25 +09:00

3.5 KiB

자료형

자바와 달리 원시 자료형이 없으면 모든 자료형이 객체입니다.

숫자형

정수형

  • Byte

  • Short

  • Int

  • Long

부동 소수형

  • FLoat

  • Double

형 변환

  • toByte()

  • toShort()

  • toInt()

  • toLong

  • toFloat()

  • toDouble()

연산자

산술 연산자

  • +, -, *, /, %

비트 연산자

  • shl

  • shr

  • ushr

  • and

  • or

  • xor

  • inv

비교 연산자

  • ==, !=

  • <, >, <=, >=

부호없는 정수형

  • UByte

  • UShort

  • UInt

  • ULong

val a: UShort = 1u
val b = 1UL

부울형

  • Boolean

연산자

  • ||

  • &&

  • !

문자형

  • Char
val a: Char = '\t'

문자열형

  • String
val s = "abcd"

문자열을 구성하는 각 문자는 배열 형태의 첨자(str[i]')를 통해서 접근할 수 있으며, for`를 사용해서 반복할 수도 있습니다.

for (ch in str) {
    println(ch)
}

Raw String

val text = """
    Hello, "World"!
    This is a raw string.
"""

각 줄 앞의 공백을 제거하려면, trimMargin()을 사용합니다.

val text = """
    |Hello, "World"!
    |This is a raw string.
""".trimMargin()

줄의 시작을 나타내는 기본값인 '|' 대신 다른 문자를 사용하려면, trimMargin(">") 같은 형식으로 사용할 수 있습니다.

템플릿

문자열 템플릿에 변수를 삽입하려는 경우에는 $를 사용합니다. 경우에 따라서 {}를 사용해서 표현식을 묶어 줄 수 있습니다.

var a = 1 
val str1 = "a is $a" 

a = 2 
val str2 = "${str1.replace("is", "was")}, but now is $a"`

문자열 템플릿은 Raw String에도 사용할 수 있습니다. Raw String에서 '$' 문자를 표시하려는 경우에는 다음과 같이 사용합니다.

val text = """
The price is ${'$'}9.99
""".trimMargin()

배열

코틀린에서 배열은 Array<T>로 표현합니다.

기본적으로 get(), set() 함수가 있으며 연산자 오버로딩이 되어 첨자 표현([])을 사용할 수 있습니다.

배열의 생성

val array1 = arrayOf(1, 2, 3, 4) // [1,2,3,4]
val array2 = arrayOfNulls(4) // [null,null,null,null]
val array = Array(5) {i -> (i*i).toString()}

원시타입 배열

  • ByteArray

  • ShortArray

  • IntArray

val array1: IntArray = intArrayOf(1,2,3)
val array2 = IntArray(5) // [0,0,0,0,0]
val array3 = IntArray(5) {43} // [43,43,43,43,43]

Any

코틀린에서 모든 클래스의 부모 클래스는 Any입니다. 자바에서의 최상위 객체가 Object인 것과 마찬가지입니다. Any는 다음 메서드를 갖고 있습니다.

  • equals()

  • hashCode()

  • toString()

타입 판별 연산자

  • is, !is
if (obj is String) {}

자동 형변환

자료형이 판별된 이후에는 자동으로 형변환이 이루어집니다.

if (x is String && x.length > 0){
    print(x.length)
}

형변환 연산자

  • as

  • as?

val x: Stirng = y as String // x, y 모두 nullable이 나닌 경우
val x: String? = y as String? // x, y 모두 nullable인 경

as?를 사용하면 형변환이 실패한 경우에 null을 반환합니다.

val x: String? = y as? String

Type alias

타입 얼라이어스를 사용하면 자료형의 이름을 다른 이름으로 대신 사용할 수 있습니다.

typealias NodeSet = Set<Network.Node>
class A {
    inner class Inner
}
typealias AInner = A.Inner