Kotlin

[Kotlin] 자료형, 변수

hvoon 2022. 9. 14. 14:48
package days01

fun main(){
    // 리터럴
    // 코드 작성시에 값을 작성하는 문법
    // 정수(Int, Long): 100, 100L, 1_000_000
    // 정수형 자료에 L이 붙으면 Long형 자료를 의미
    // 큰 값의 함수를 구분하기 위해 천단위 구분기호(,)와 같은 기능으로 '_'을 중간에 넣음

    // 실수(Double, Float): 11.11, 22.22F
    // F가 사용되면 Float형 자료

    // 문자(Char): 'A', 'B'
    // 문자열(String): "문자열"
    // 진위형(Boolean): true, false

    // 특징: 자료형의 이름이 모두 "대문자"로 시작함. 모두 클래스형 자료이기 때문

    // 정수 리터럴
    println(100) // Int
    println(100000000000) // Long
    println(100000000000L)
    println(938_492_823)
    // 가끔 길이가 Long형 데이터를 개발자가 자리수 구분하여 사용하기 위해 위와 같이 사용

    // 실수 리터럴
    println(11.11)
    println(22.22F)

    // 문자 리터럴
    println('A')
    println('가')

    // 문자열 리터럴
    println("문자열")

    // 진위형 논리 리터럴
    println(true)
    println(false)
}

 

trimMargin(): 호출객체가 되는 문자열에서 각 행의 앞뒤 공백 및 행의 사작 문자('|')를 제거해주는 함수.

   // 복수형 String
   // 큰 따옴표 세개를 이용하여 복수행의 문자열을 하나의 데이터로 다룰 수 있음.
    println("동해물과 백두산이\n마르고 닳도록\n하느님이 보우하사\n우리나라 만세\n")
    println("""동해물과 백두산이
        |마르고 닳도록
        |하느님이 보우하사
        |우리나라 만세""".trimMargin())

변수의 자료형

-정수: Long(8), Int(4), Short(2), Byte(1)
-부호가 없는 정수형: ULong(8), UInt(4), UShort(2), UByte(1)
-실수: Double(8), FLoat(4)
-논리: Boolean(1)
-문자: Char(2)
-문자열: String

 

*자바의 자료형이 대부분 그대로 사용되지만 자료형의 이름 첫글자는 대문자로 씀. U가 붙은 자료형은 Unsingned를 의미 하며 음수가 없는 자료형을 칭함. Int가 -21억 ~21억의 표현 범위라면, UInt는 0~42억까지의 표현 범위를 갖음.

 

변수의 선언

-Kotlin은 변수 선언 시 val, var 두가지 키워드 사용

-var: 선언 이후 값을 다시 저장할 수 있음

-val: 선언 이후 값을 다시 저장할 수 없음

-변수의 선언 양식: var/val 변수명: 타입=값

-타입을 생략 시 저장하는 값에 따라 자료형이 자동으로 결정됨

// int a=100; 자바
// val a:Int=100; 코틀린

val a1:Int=100; // 변수 이름 뒤에 :을 쓰고 자료형을 이어 써서 변수 선언
println("a1=${a1}") // ${}안에 변수이름을 넣어서 변수의 값을 출력구문과 함께 출력
println("a1=$a1") // 리터럴 출력이 아니라 변수 출력인 경우 ${}에서 {} 생략 가능
val a2=100 // 변수선언시 자바스크립트처럼 자료형을 생략하면 저장하는 값에 따라 자동으로 자료형이 결정됨
println("a2=$a2")
var a3:Int=100
val a4:Int=100
// var로 선언된 변수는 값을 바꿀 수 있고 val로 선언된 변수는 초기화된 값을 변경할 수 없음
println("a3:$a3")
println("a4:$a4")
a3=200
println("a3:$a3")
// val 변수는 값을 다시 저장 못함
// a4=200 -> error

 

null을 허용하거나 허용하지 않는 변수

코틀린 변수는 선언할 때 그 변수가 null 값을 갖을 수 있는 변수인지 아닌지 결정할 수 있음. 평상 시의 변수선언은 null 값을 허용안함. 이는 프로그래밍 시 null 값이 저장되어져서 오는 오류들을 미연에 방지하기 위해서 만들어진 규칙. 다만, 우리가 프로젝트에서 로그인 결과 등을 알아 볼 때 변환된 값이 null인 경우 로그인하려는 아이디가 없다고 판단하듯이 null이 저장되는 것을 일부 허용하기 위해서 예외를 두고 있음. 변수 선언 시 자료형 뒤에 '?'을 붙여 null값을 허용하게 할 수 있음.

var/val 변수명:자료형=값 // null 허용하지 않는 변수
var/val 변수명:자료형?=값 // null을 허용하는 변수
// var a5:Int=null // 에러
var a5:Int=100
var a6:Int?=null
println("a5:$a5")
println("a6:$a6")

var a7:Int?=a5
println("a7:$a7")
// a8은 null을 허용하는 변수가 아니므로 null 값을 저장하고 있는 a6 변수로 초기화하는 동작이 오류임
// var a8:Int=a6 // error
// 코틀린은 모든 기본 타임 변수 및 값을 객체로 변환하여 사용함