엔지니어 규의 IT 프로그래밍 다이어리

[Kotlin]1. 변수와 자료형 본문

프로그래밍 언어/코틀린

[Kotlin]1. 변수와 자료형

엔지니어 규 2022. 4. 28. 21:29
728x90

코틀린의 클래스 이름은 파스칼 표기법(모든 단어를 대문자로 시작) 예: Class Name

 

함수나 변수 이름은 첫 단어만 소문자로 시작하는 카멜 표기법을 지향한다. 예: functionName

 

코틀린은  변수를  두가지 방법으로 선언

1
2
3
4
5
6
fun main(){
    var a : Int = 4 // 변경가능
    val b : Int = 4 // 변경불가능
    println(a)
    println(b)
}
cs

var  변수 : 자료형 = value 형태로 자료를 선언한다.

var : 일반적으로 통용되는 변수로 언제든지 읽기 쓰기가 가능함

val : 선언시에만 초기화 가능 하며 중간에 값을 변경할 수 없음

 

그러므로 runtime 시에 변하지 말아야 할 값은 val 선언하는 것이 좋다.

 

또한 변수는 선언 위치에 따라서 두가지 이름으로 불린다.

 

클래스에 선언된 변수 : Property(속성)

이외의 Scope 내에 선언된 변수 : Local Variable(로컬변수)

 

Kotlin 이 고전적인 언어들과 다른점?

 

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

 

그러나 kotlin 은 기본변수에서 null을 허용하지 않으며,

 

또한 변수에 값을 할당하지 않은채로 사용하게 되면 문법에러를 표시하고, 컴파일을 막아주게 된다.

 

그래서 원치않는 동작이나 null pointer exception 등을 원천적으로 차단해 준다는 장점이 있다.

 

그러나 프로그램에 따라서는 변수에 값이 할당되지 않은것 자체를 하나의 정보로 사용하는 경우도 있을 수 있다.

 

이런경우 변수 선언시 자료형 뒤에 물음표를 붙이면 null 을 허용하는 nullable 변수로 선언이 가능하다.

1
2
3
4
5
6
7
8
fun main(){
    var a : Int = 4 // 변경가능
    val b : Int = 4 // 변경불가능
    val c : Int? = null
    println(a)
    println(b)
    println(c)
}
cs

nullable 변수는 값이 null 인 상태에서 연산할때 null pointer exception 이 발생할 수 있어 주의해서 사용해야 한다.

이외에도 변수의 초기화를 늦추는 lateinit 이나 lazy 속성도 있다.

 

 

Kotlin이 제공하는 기본자료형(Primitive type)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
fun main(){
    var a: Int = 1234   //32비트 이내의 10진수가 기본형
    var b: Long = 1234L //65비트의 Long 타입의 10진수는 숫자뒤에 'L'을 붙여 더 큰 메모리를 사용하는 정수임을 표시
    var c : Int = 0x1af // 16진수는 '0x' 를 앞에 붙이며 x는 hexadecimal의 약어
    var d : Int = 0b101010 // 2진수는 '0b' 를 앞에 붙인다.
    // 코틀린은 8진수의 표기는 지원 X
    var e : Double = 123.5 // 실수는 기본이 Double 이다.
    var f : Double = 123.5e10 // 필요시 지수표기법을 추가하면 되며 e는 exponential의 약어
    var g : Float = 123.5f // 16비트의 float 형으로 취급한다.
    // float 은 7자리, Double은 15~16자리 까지 표현가능. Double이 더 정밀함
    var h : Char = '가' // 한글자를 표현
    var i : Boolean = true // true 또는 flase (참, 거짓) 을 표현
    var j = "가나다라마바사" // 문자열은 따옴표 안에 사용 할 수 있다.
}
cs

이외에도 다른 자료형이 있을 수 있다.

728x90
Comments