kotlin - 자료형
Updated:
-
자료형 (Data Type)](https://kotlinlang.org/docs/reference/basic-types.html)
- 기본형(Primitive Data Type) : 가공되지 않은 순수한 자료형, 프로그래밍 언어에 내장
- 참조형(Reference Type) : 객체를 생성하고 동적 공간에 데이터를 둔 다음 이것을 참조하는 자료형
- 자바에서는 int, long, float, double 등 기본형과 String, Date와 같은 참조형을 모두 사용
- 코틀린은 참조형 자료형을 사용, 성능 최적화에 따라 JVM에 실행하기 위해 코틀린 컴파일러에서 기본형으로 대체
-
var : 가변형, 사용할 변수의 값이 변경 될 때 사용
-
val : 불변형, 사용할 변수의 값이 변경되지 않아야할 때 사용
val a : Int = 2 a = 3 //error var b : Int = 3 b = 2 //ok
-
Numbers(Byte, Short, Int, Long, Double, Float)
- 숫자 상수를 읽기 쉽도록 하기 위해 밑줄 사용 가능(100000 == 100_000)
Type bit Size Byte 8 Short 16 Int 32 Long 64 Double 64 Float 32 val b : Byte = 0b11101_1100 val s : Short = 123 val i : Int = 20 val l : Long = 34L val d : Double = 1.2 val f : Float = 124.0F
-
Characters
Char
로 표현, 문자 타입은 숫자로 직접 취급될 수 없음- 작은 따옴표를 사용하여 표현(‘1’), 특수문자는
\
를 사용하여 표현((\t, \b, \n, \r, ', ", \, $) 지원), 다른 문자 인코딩 시 유니코드 시퀀스를 사용해야함\uFF00
fun judge(c: Char){ if(c == 1){ // Error ... } }
-
Booleans
-
Boolean
으로 표현 하며,true
,false
두가지 값을 가진다 -
연산자
||
- lazy disjunction&&
- lazy conjunction!
- negation
-
-
Arrays
- 배열은
Array
클래스로 표현됨,get
,set
함수(operator overloading conventions에 따라서[]
로 바뀜)와size
속성을 가짐, 또한 몇가지 유용한 멤버함수들도 제공됨
class Array<T> private constructor(){ val size : Int operator fun get(index : Int): T operator fun set(index : Int, value: T): Unit operator fun iterator(): Iterator<T> ... }
- 배열 생성시
arrayOf()
에 값들을 파라미터로 넣음, 값이 없는 배열을 생성시arrayOfNulls()
로 생성
//Craetes an Array<String> with values["0", "1", "4"] val array = Array(3){i->(i*i).toString()} array.forEach{println(it)}
ByteArray
ShortArray
IntArray
와 같은 primitive type들을 나타내는 특수한 클래스를 가짐
val x: IntArray = intArrayOf(1, 2, 3) x[0] = x[1] + x[2]
- 배열은
-
Strings
- 문자열은
String
타입으로 선언됨 - 문자열은 immutable 하다 -> 그에 대한 issue
- 요소들은 Charater로 인덱싱 연산자로 연산 가능
str[i]
, for 루프로 반복가능 +
연사자를 사용하여 연결 가능, 첫번째 요소가 문자열이면 다른 타입의 값도 연결 가능하다.
for(c in str) println(c) val s = "abc" + 1 println(s + "def") // abc1def
- 문자열은
-
String literals
- 두가지 타입이 존재 - 이스케이프된 문자열, raw 문자열
- 이스케이프된 문자열 - 자바 문자열과 유사,
\
을 사용한 관습적인 방법으로 수행 - raw 문자열 -
"""
을 통해 구분되고 이스케이핑을 포함하지 않으며 개행문자와 다른문자 포함가능, 공백 제거를 하려면trimMargin()
함수를 사용할 수 있음.
val str = "Hello world!\n" //escaped strings val text - """ for(c in "foo") print(c) """ // 그대로 출력됨
-
String templates
- 템플릿 표현을 포함할 수 있음 ->
$
기호로 시작하고 이름이 붙는 구조거나 중괄호 안에 들어갈 수 있고, String literals 내에서도 지원됨, raw 문자열에서는 맨 마지막 예제와 같이 구문을 사용함.
val i = 10 println("i = $i") // i = 10 val s = "abc" println("$s.length is ${s.length}") // abc.length is 3 val price = """ ${'$'}9.99 """
- 템플릿 표현을 포함할 수 있음 ->