-
데이터 타입과 변수프로그래밍 언어/Kotlin 2023. 7. 13. 20:04
변수
변수 var
코틀린에서 변수는 var 키워드를 이용해 선언할 수 있다. 다른 언어와 동일하게 선언과 동시에 값을 부여하여 초기화를 할 수 있고, 또는 값으로 초기화하지 않고 선언만 한 다음 사용할 수도 있다.
이때 선언과 동시에 초기화를 하는 경우, 코틀린이 입력되는 값으로 타입을 추론할 수 있다.
반면, 선언만 하는 경우에는 반드시 변수명 옆에 타입을 명시해야 한다. (TypeScript와 동일)
// 선언과 동시에 초기화 var year = 2023 // 선언만 하고 사용 var age: Int age = 24
즉, 변수는 최초 선언 시에 타입이 결정되며, 한번 타입이 결정된다면 이후에는 동일한 타입의 값만 담을 수 있다.
읽기 전용 변수 val
val 키워드를 이용하면 읽기 전용 변수를 선언할 수 있다. 읽기 전용 변수이므로 한 번 입력된 값은 변경할 수 없다. 상수와 비슷한 의미를 가지지만, 실제 상수는 아니다.
val code = 2023
만약 val로 정의된 변수의 값을 변경하려고 하면 에러가 발생한다.
상수 const
상수는 기준이 되는 변하지 않는 값을 입력할 때 사용하며, 읽기 전용 변수인 val 앞에 const 키워드를 붙여서 생성한다.
val과 같이 읽기 전용인 것은 동일하지만, 컴파일 시에 값이 결정된다는 차이가 있다.
데이터 타입
Primitive Type
기본 타입이란 변수에 값의 크기가 미리 정해져 있는 타입을 말한다. 각 데이터 타입마다 정해진 최대 크기가 정해져 있으며, 정해진 저장 범위를 넘어서는 값을 입력하면 오버플로우가 발생한다.
다음은 코틀린에서 제공하는 기본 데이터 타입이다.
Data type Description Literal Double 64bit 실수 (default) val double = 3.141592 Float 32bit 실수 val float = 3.141592F Long 64bit 정수 val long = 3141592L Int 32bit 정수 (default) val int = 3141592 Short 16bit 정수 val short: Short = 3141 Byte 8bit 정수 val byte: Byte = 31 Char 16bit 문자 1개 val char = 'A' Boolean true 또는 false val bool = true 숫자형 데이터 타입은 Int와 Double이 기본형이다.
만약 Double 대신 Float를 사용하고 싶다면 숫자 뒤에 'F'를 붙이고, Int 대신 Long을 사용하고 싶다면 숫자 뒤에 'L'을 붙여서 표현할 수 있다. 만약 Short와 Byte와 같은 타입을 사용하고 싶다면, 직접 타입을 명시하여야 한다.
String
문자열은 여러 개의 문자를 담는 데이터 타입이다. 얼마나 긴 문장이 들어오게 될지 모르기 때문에, 값의 크기가 미리 정해진 타입인 기본 타입은 아니다. 하지만 마치 기본 타입처럼 광범위하게 사용되기 때문에 기본 타입이라고 생각해도 큰 문제는 없다.
Data type Description Literal String 여러 개의 문자 val string = "string data" 문자열은 Char 데이터 타입과 달리 큰따옴표를 이용해 값을 선언할 수 있다.
문자열
String Template
변수를 함께 사용하여 문자열을 작성할 수 있는 방법을 String Template라고 한다.
val name = "Cookie" val n1 = 10 val n2 = 15 println("이름: $name") // 이름: Cookie println("더하기: ${n1 + n2}") // 더하기: 25
문자열 내에서 $기호를 사용하여 변수를 참조할 수 있다. 하나의 변수만 참조할 때는 변수명 앞에 $를 붙여 간단히 사용할 수 있고, 여러 개의 변수를 참조하거나 연산을 해야 할 때는 중괄호를 추가로 사용할 수 있다.
(ES6의 Template literal에서 String Interpolation 방식과 유사)
Escape Character
문자열 내에서 특수기호를 사용하기 위해서는 아래의 표를 참고하면 된다.
표현 이름 \' single quote \" double quote \/ slash \\ backslash \n new line \r carrige return \t tab \b backspace \f form feed \v vertical tab \0 null character \$ dollar sign Raw String
큰따옴표를 3번 연속으로 사용하면 원시 문자열 처리를 사용할 수 있다. 이 방식을 이용하여 문자열을 표현하면 Escape Character와 같은 특수한 표현이 동작하지 않고 문자 그대로 출력된다.
val s1 = """원시 문자열 처리는 \n이스케이프 문자를 그대로 출력""" val s2 = """원시 문자열 에서도 ${a + b} template 기능은 동작"""
단, 원시 문자열에서도 String Template 기능은 그대로 동작한다.
String Formatting
문자열 포맷팅은 마치 c언어의 문자열 포맷팅과 유사하게 문자열을 표현할 수 있는 방식이다.
형식 문자 객체 %s 문자열 %d 정수 %f 실수 %e 실수 (지수) %x 실수 (16진수) val float = 1234.5 val int = 100 val string = "is String" val edec = 10e15 val hex = 0xffff println("float: %6.2f, int: %6d, string: %10s".format(float, int, string)) // float: 1234.50, int: ___100, string: _is String (_는 띄워쓰기를 의미) println("edec: %e, hex: %x".format(edec, hex)) // edec: 1.000000e+16, hex=ffff
리터럴로 표현된 문자열에서 format 메서드를 이용하여 문자열 포맷팅을 사용할 수 있다.