코틀린 개념 정리 2 - 자료형과 변수
이번 게시글에서는 코틀린에서의 자료형과 변수에 대한 기본 개념을 정리할 것이다.
변수란?
프로그래밍 언어에서 변수란 「값을 저장할 수 있는 저장공간」을 의미한다.
코틀린에서 변수는 불변형(immutable) 그리고, 가변형(mutable) 두 가지 형태의 변수가 존재한다. 이 두 형태는 선언 키워드 val과 var를 사용하여 구분한다.
- 불변형(immutable) val : 변수 선언 시 초기화가 되어야 함. 초기화 이후 불변형 변수는 값을 변경할 수 없음
- 가변형(mutable) var : 변수의 값을 변경할 수 있음.
코틀린에서의 자료형
자료형은 기본형 자료형과 참조형 자료형이 존재하며 코틀린은 참조형 자료형을 사용한다. 참조형으로 선언된 변수는 성능 최적화를 위해 컴파일러에서 기본형으로 다시 대체된다.
- 기본형 자료형
- 프로그래밍 언어에 내장된 가공되지 않은 순수한 자료형
- ex) int, string, float, ...
- 참조형 자료형
- 객체를 생성하고 동적 공간에 데이터를 저장하고 이를 참조하는 자료형
- ex) Int, String, Float, ...
정수 자료형
- Long, ULong : 8 바이트
- Int, UInt : 4 바이트
- Short, UShort : 2바이트
- Byte, UByte : 1바이트
정수 접두사 : 0x => 16진수, 0b => 2진수
정수 접미사 : 정수L => Long 형 추론, 정수u => UInt 형 추론, 정수uL => ULong 추론
큰 수의 표현 : 자릿수 구분을 위효 정수 표현 시 _를 사용할 수 있음. ex) 백만 => val number = 1_000_000
실수 자료형
- Double : 8 바이트
- Float : 4 바이트
실수형 접미사 : 실수F => Float형 추론
실수형 계산 시 주의점
부동 소수점의 부정확성으로 인해 계산 시 오차가 발생할 수 있다. 아래 코드 실행 시 100의 출력 값을 예상할 수 있지만 실질적인 계산 결과는 100.09999999999859으로 오차가 발생한다.
fun main() {
var num = 0.1
for (x in 0..999)
num += 0.1
println(num)
}
논리 자료형 : Boolean, 크기 : 1비트 (true, false)
문자 자료형 : Char, 크기 : 2바이트
문자열 자료형 : String
문자열 변수의 경우 변수가 가리키는 참조는 변경 가능 하지만 문자열 데이터의 값은 변경 불가능
※ 문자열 내부에서 ${변수나 식} 표현식을 사용하여 문자열 내부에 변수나 식을 사용할 수 있다.
코틀린에서의 변수 선언
코틀린에서 변수 선언은 아래 형식을 따른다.
선언 키워드(val, var) 변수 이름 : 자료형(Int, String, ...) = 값
ex) val myName: String = "감자 바보"
불변형 변수 val는 변수 선언과 동시에 위와 같이 값을 지정해주어야만 한다.
선언 키워드(val, var) 변수 이름 = 값
변수 선언과 동시에 값을 지정하는 경우는 자료형을 생략할 수 있다. 이 경우 값의 자료형의 따라 변수의 자료형이 정해진다.
ex) val myName = "감자 바보"
lateinit var 변수 이름 : 자료형(Int, String, ...)
...
자료형(Int, String, ...) = 값
가변형 변수는 lateinit 키워드를 사용할 경우 변수 이름과 자료형을 선언 시점 외에 다른 시점에서 값을 초기화할 수 있다.
참고
1. 위키백과 - 코틀린, 코틀린 (프로그래밍 언어) - 위키백과, 우리 모두의 백과사전 (wikipedia.org)
2. boostcourse - 코틀린 프로그래밍 기본 1 강의 (강사 : 황영덕), 코틀린 프로그래밍 기본 1 > 2-1 기본 자료형과 변수 선언방법 (1) 불변형, 기본형 : 부스트코스 (boostcourse.org)
3. 코틀린 공식 사이트 - Basic syntax | Kotlin (kotlinlang.org)
'안드로이드 > 코틀린 개념' 카테고리의 다른 글
[코틀린 / Kotlin] 코틀린 개념 정리 5 - 연산자 (0) | 2022.06.08 |
---|---|
[코틀린 / Kotlin] 코틀린 개념 정리 4 - 자료형 변환 (0) | 2022.06.07 |
[코틀린/Kotlin] 코틀린 개념 정리 3 - Null 안전성(Null Safety) (0) | 2022.06.06 |
[코틀린/Kotlin] 코틀린 개념 정리 1 - 코틀린이란? (0) | 2022.06.03 |