본문 바로가기

Language/Kotlin

[Kotlin] 변수와 자료형

728x90
반응형

명명 규칙

  • 클래스 이름파스칼 표기법 (모든 단어를 대문자로 시작)
  • ex. ClassName
  • 함수나 변수 이름카멜 표기법 (첫 단어만 소문자로 시작)
  • ex. functionName

변수의 선언

  • var : 일반적으로 통용되는 변수. 언제든지 읽기 쓰기가 가능함
  • val : 선언시에만 초기화 가능. 중간에 값을 변경할 수 없음

변수는 선언위치에 따라

  • Property(속성) : 클래스에 선언된 변수
  • Local Variable(로컬변수) : 이 외의 Scope 내에 선언된 변수

변수 초기화

고전적인 언어들은 변수가 선언된 후 초기화 되지 않으면 기본값으로 초기화되거나 값이 할당되지 않았다는 표시로 null 값을 가지게 된다.

but 코틀린은 기본 변수에서 null을 허용하지 않으며 변수에 값을 할당하지 않은채로 사용하게되면 문법 에러를 표시하고 컴파일을 막아주므로 의도치 않은 동작이나 null pointer exception 등을 원천적으로 차단해준다는 장점이 있다.

변수에 값을 할당하는 것은 반드시 선언시에 할 필요는 없으며 변수를 참조하여 사용하기 전까지만 해주면 된다.

var a: Int
println(a)  // Error

var a: Int = 123
println(a)  // 123

var a: Int
a = 123
println(a)  // 123

변수에 값이 할당되지 않았다는 것을 하나의 정보로 사용하는 경우?

자료형 뒤에 ?를 붙여 nullable 변수로 만든다.

var a: Int? = null
println(a)  // null

이 외에도 변수의 초기화를 늦추는 lateinit이나 lazy 속성도 있으나 클래스에 관한 지식이 필요하므로 이후에 - !!

기본 자료형

자바와의 호환을 위해 자바와 거의 동일

  • 숫자형 - Byte(8bits) / Short(16bits) / Int(32bits) / Long(64bits)
  • 실수형 - Float(32bits) / Double(64bits)

정수형의 리터럴(= 코드 내에 값을 표기하는 것)

  • 32비트 이내의 10진수 (기본형) - 숫자만 표시
  • 64비트인 Long 타입의 10진수 - 숫자 뒤에 L 붙임
  • 16진수 - 0x를 앞에 붙임
  • 2진수 - 0b를 앞에 붙임

* 8진수의 표기는 지원하지 않음

var intValue: Int = 1234
var longValue: Long = 1234L
var intValueByHex: Int = 0x1af
var intValueByBin: Int = 0b10110110

실수형의 리터럴

  • 기본이 Double형 - 소수점을 포함, 필요 시 지수 표기법 추가
  • Float형 - 뒤에 소문자 또는 대문자 f를 붙임
var doubleValue: Double = 123.5
var doubleValuewithExp: Double = 123.5e10
var floatValue: Float = 123.5f

문자형

코틀린은 내부적으로 문자열을 유니코드 인코딩 중에 한 방식인 UTF-16 BE로 관리. 따라서 글자 하나하나가 2bytes의 메모리 공간 사용

var charValue: Char = 'a'
var koreanCharValue: Char = '가'

논리형

var booleanValue: Boolean = true

문자열

var stringValue = "one line string test"

// 여러 줄로 된 문자열
val multilineStringValue = """multiline
string
test"""
728x90
반응형

'Language > Kotlin' 카테고리의 다른 글

[Kotlin] 흐름제어와 논리연산자  (0) 2023.09.04
[Kotlin] 반복문과 증감연산자  (0) 2023.09.02
[Kotlin] 조건문과 비교연산자  (0) 2023.09.02
[Kotlin] 타입추론과 함수  (0) 2023.08.31
[Kotlin] 형변환과 배열  (0) 2023.08.31