조용한 담장

[코틀린] Kotlin : 기본 변수의 타입 살펴보기 - 2 본문

kotlin

[코틀린] Kotlin : 기본 변수의 타입 살펴보기 - 2

iosroid 2019. 12. 31. 12:09

코틀린(kotlin)의 basic types 의 숫자에 이어서 나머지 부분을 살펴보자.

characters

문자는 Char 를 쓴다.

class Char : Comparable<Char>

16 bit unicode 문자로 처리된다.
문자는 '1' 와 같이 작은 따옴표로 표시한다.

var a: Char = '1'
println(a)
// a = 1 // type error!

당연히 숫자값 직접 대입해서 쓸 수 없다. (이게 가능한 언어를 사용했던 경우에는 주의하면 되겠다.)
문자 1을 숫자 1로 바꾸려면 변환 함수를 사용한다.

var b: Int = a.toInt() // b = 49
println("${b} ${b-'0'.toInt()}") // 49 1

특수 문자는 \(역 슬래쉬) 를 사용한다.

\t, \b, \n, \r, \', \", \\, \$

특수 유니코드 문자는 Unicode escape sequence syntax 를 사용한다. 예: \uFF00

val a: Char = '\u263a'
println(a) // ☺

숫자 타입과 마찬가지로 문자타입도 nullable reference 일 때 boxed 된다.

Booleans

Booleans : true or false

class Boolean : Comparable<Boolean>

nullable reference 일 때 boxed 된,,,다.
operation : || && !

Arrays

배열은 Array 를 쓴다.

class Array<T>

생성 함수 : arrayOf(), arrayOfNulls(), emptyArray(), ...
element 접근 : get(), set(), [], ...

val a = arrayOf(1, 2, 3)
a.set(2, 5)
println("${a.get(0)} ${a[1]} ${a[2]}") // 1 2 5
var b = arrayOfNulls<String>(3)
if (b[0] == null) {
    println("b[0] is null") // b[0] is null
}

Array class 의 constructor 를 직접 사용하려면 배열의 크기와 배열 초기값을 설정하는 함수를 파라미터로 넣어준다.

<init>(size: Int, init: (Int) -> T)
val a = Array<String>(3, { i -> i.toString() } )
a.forEach { print(it) } // 012

Primitive type arrays

boxing overhead 없이 primitive type 의 배열을 위한 클래스가 있다.
ByteArray, ShortArray, IntArray, ...
IntArray 설명을 보면. JVM 에서 primitive type 인 int 배열을 만든다.

class IntArray An array of ints. When targeting the JVM, instances of this class are represented as int[].

Array 클래스와 아무 관계가 없지만 속성과 메소드는 동일하게 가지고 있어 사용법도 동일하다.
각 타입의 클래스들은 각각 factory function 을 가지고 있다.

val x: IntArray = intArrayOf(1, 2, 3)
x[0] = x[1] + x[2]

val arr = IntArray(5) // [0, 0, 0, 0, 0]
val arr = IntArray(5) { 42 } // [42, 42, 42, 42, 42]
var arr = IntArray(5) { it * 1 } // [0, 1, 2, 3, 4]

String

문자열을 나타내는 String 클래스 이다.

class String : Comparable<String>, CharSequence

문자열의 문자 접근 : []​
문자열 끼리의 연결 : +

raw string : """
string template : $${expression}

val a = "string class"
for (c in a) {
    print(c)
}
val s = "abc" + 1
println("\n" + s)
val text = """
    from :
    	play.kotlinlang.org
        $s's length : ${s.length}
    """
println(text)

// output:
// string class
// abc1
// 
//     from :
//     	play.kotlinlang.org
//         abc1's length : 4

 

Comments