2) 변수와 데이터 타입

SOCICAL·2024년 6월 17일

android

목록 보기
11/20
post-thumbnail

# 변수 선언 방법

Kotlin에서는 변수 선언 시 varval 키워드를 사용한다.

  • var: 가변형 변수로, 값을 변경할 수 있다.
  • val: 불변형 변수로, 한 번 값을 할당하면 변경할 수 없다. 이는 Java의 final 키워드와 유사하다.
// 불변형 변수는 값 수정이 불가능하다.
val name: String = "Kotlin" // 불변형 변수
name = "IT is True" // 수정이 불가능함!

// 일반적인 변수 선언
var name: String = "Kotlin"

// 변수 선언 후 값 지정
var name: String
name = "Kotlin"

// String형으로 자동 추론
var name = "Kotlin"

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

  • Property(속성): 클래스에 선언된 변수
  • Local Variable(로컬 변수): 스코프 내에 선언된 변수

Kotlin은 기본적으로 변수에서 null을 허용하지 않아, 변수에 값을 할당하지 않은 채 사용하면 에러를 표시하고 컴파일을 막아준다. 이를 통해 의도치 않은 동작이나 null pointer exception 등을 방지할 수 있다.

fun main() {
    var a: Int = 123 // 코틀린은 값 초기화 필수!
    println(a)
}

fun main() {
    var a: Int
    a = 123 // 이렇게 초기화해도 된다
    println(a)
}

상황에 따라 변수에 값이 할당되지 않았다는 것을 하나의 정보로 사용할 경우, nullable 변수로 선언할 수 있다. 하지만 null pointer exception이 발생할 수 있으므로 주의해서 사용해야 한다.

fun main() {
    var a: Int
    a = 123 //이렇게 초기화해도 된다
    println(a)
}

그런데 상황에 따라 변수에 값이 할당되지 않았다는 것을 하나의 정보로 사용하는 경우도 있을 수 있다.

fun main() {
    var a: Int? = null // '?'를 표시하지 않으면 선언 시 null이 될 수 없음
}

# 자료형

Kotlin에서 제공하는 기본 자료형은 Java와 거의 동일하다. 자바와의 호환을 위해 다양한 정수형과 실수형을 제공한다.

- 정수형

자료형크기범위
Byte1Byte128 ~ 127
Short2Byte32768 ~ 32767
Int2Byte-2147483648 ~ 2147483647
Long8Byte-9223372036854775808 ~ 9223372036854775807
UByte1Byte0 ~ 255
UShort2Byte0 ~ 4294967295
UInt4Byte범위
ULong8Byte0 ~ 18446744073709551615

- 실수형

자료형크기범위
Float4Byte1.4E-45 ~ 3.4028235E38
Double8Byte4.9E-324 ~ 1.7976931348623157E308
fun main() {
    var intValue: Int = 1234
    var longValue: Long = 1234L // L을 붙여 더 큰 메모리를 사용하는 정수임을 표시
    var intValueByHex: Int = 0x1af // 16진수
    var intValueByBin: Int = 0b101 // 2진수 (binary 약자)
    /* 코틀린은 8진수 표기는 지원하지 않는다. */
    var doubleValue: Double = 123.5 // 실수는 소수점을 포함해 숫자를 쓰거나
    var doubleValueWithExp: Double = 123.5e10 // 필요시 지수 표기법을 추가한다.
    var floatValue: Float = 123.5f // Float는 f를 붙인다.
}

- 그 외 자료형

자료형설명
Boolean논리 자료형으로 true 또는 false를 표현
Char문자 자료형으로 작은 따옴표('') 사이에 한 글자를 저장
String문자열 자료형으로 큰 따옴표("") 사이에 문자를 저장
// 문자, 문자열
fun main() {
    var charValue: Char = 'a'
    var koreanCharValue: Char = '가'
    var stringValue = "one line string test"
    var multiLineStringValue = """multiline
    string
    test"""
}

// Boolean
fun main() {
    var booleanValue: Boolean = true
}

# 형 변환

Kotlin은 형 변환 시 발생할 수 있는 오류를 막기 위해 암시적 형변환을 지원하지 않는다. 대신 명시적 형변환을 통해 자료형을 변환한다.

형변환 함수

  • toByte()
  • toShort()
  • toInt()
  • toLong()
  • toFloat()
  • toDouble()
  • toChar()
fun main() {
    var a: Int = 54321
    var b: Long = a.toLong() // int를 long형으로 변환
}

# 배열

배열은 처음 선언했을 때의 전체 크기를 변경할 수 없지만, 한 번 선언하면 다른 자료구조보다 빠른 입출력이 가능하다.

fun main() {
    var intArr = arrayOf(1, 2, 3, 4, 5) // int 배열
    var nullArr = arrayOfNulls<Int>(5) // 비어있는 5크기의 배열

    intArr[2] = 8 // index2에 8값 할당
}

# 타입 추론

Kotlin은 변수나 함수들을 선언할 때나 연산이 이루어질 때 자료형을 코드에 명시하지 않아도 자동으로 자료형을 추론한다.

fun main() {
    var a = 1234 // int
    var b = 1234L // long

    var c = 12.45 // Double
    var d = 12.45f // float

    var e = 0xABCD // 16진수
    var f = 0b0101010 // 2진수

    var g = true // boolean
    var h = 'C' // Char
}

0개의 댓글