티스토리 뷰

변수(Variable), 자료형 (Data type)

이번 글에서는 Kotlin의 자료형에 관하여 다루고 이를 Java 하고 간단하게 비교해보려고 합니다.

그전에 변수에 대해서 알아야 될 필요가 있습니다.

 

변수는 프로그래밍을 하면서 문자, 숫자 등 정보를 저장하는 공간을 뜻합니다.

게임으로 예를 들자면 유저의 닉네임이 변수에 담길 수도 있고 레벨, 능력치 등이 담길 수 있습니다.

Kotlin에서 변수 선언하기

변수를 Kotlin에서 사용해봅시다.

먼저 저번 글에서 만들었던 프로젝트에서 코드를 작성하기 위해 파일을 만들어줘야 합니다.

Kotlin은 확장자 .kt를 가진 파일 안에서 코드를 작성하며 이 코드는 Package(패키지)라는 개념으로 묶입니다.

kr
└ skylightqp
└└ learning
└└└ Learning.kt

위와 같은 형식입니다.

위에서 더 확장하여 다른 예시를 보여준다면, (.kt가 붙지 않았다면 Package입니다.)

kr
└ skylightqp
└└ learning
└└└ Learning.kt
└└└ LearningTwo.kt
└└└ utils
└└└└ Text.kt
└└└└ Logger.kt

이렇게 나타낼 수 있습니다.

 

Package 네이밍은 kr.skylightqp.learning 에서 저 같은 경우 빨간 부분은 개인의 도메인, 노란 부분은 프로젝트 이름을 씁니다.

 

이제 인텔리제이에서 새 파일(.kt)를 만들어줄 차례입니다.

 

Package 만들기

src 우클릭 -> New -> Package를 클릭하여 새로운 Package를 만들 수 있습니다.

 

.kt 만들기

이후 Package를 우클릭하여 New -> Kotlin File/Class를 클릭하여 새로운 .kt 파일을 만들어줍니다.

만들어주시면 첫 줄에 이전 과정에서 만든 Package가 명시됩니다.

 

코드를 작성하여 프로그램을 실행하면 처음 실행될 곳을 만들어줘야 됩니다.

fun main(args: Array<String>){
    // 해당 문구는 주석이며 메모할 때 쓰입니다. 실행 시 해당 부분은 무시됩니다.
    /*
     이렇게 사용하여 여러 줄로도 쓸 수 있습니다.
    */
}

Kotlin은 main() 함수가 처음으로 작동되는 구간입니다. (fun, () 안에 있는 내용들은 추후 다뤄보겠습니다.)

{ } 안에 작동될 코드를 써주시면 됩니다.

var 그리고 val

fun main(args: Array<String>) {
    var a = 1
    val b = 2
    print("a의 변수 값은? ${a}")
    print("b의 변수 값은? ${b}")

    a = 10
    b = 20
    
    print("바뀐 a의 변수 값은? ${a}")
    print("바뀐 b의 변수 값은? ${b}")
}
print() 함수 안에 ${변수}를 이용하여 변수 내용을 출력할 수 있습니다. $a ${a} 모두 가능. 

Kotlin에서는 변수를 var 변수이름: 자료형 또는 val 변수이름: 자료형으로 선언할 수 있습니다. (자료형은 생략이 가능합니다.)

var a = 1과 같이 코드를 작성하면 변수 a를 만드는 동시에 변수 a에 숫자(정수) 1을 넣는 의미가 됩니다.

a = 10은 기존 변수 a의 새로운 숫자 10을 넣는 의미가 됩니다. 

 

해당 코드를 작성하면 IDE에서 오류가 발생할 텐데 해당 오류는 밑에서 다루겠습니다. 일단은 무시!

 

= 이 기호를 대입연산자(할당연산자, Assignment operators)라고 하며 추후 다뤄보겠습니다. 또한
Java에서는 변수를 선언할 때 "자료형 변수이름" 이와 같이 사용합니다. 자료형은 생략할 수 없으며
사용 예를 들자면 "int a = 1;" 이렇게 사용합니다.

 

Run!

해당 코드를 작성하면 fun main() 옆에 초록색 화살표 버튼이 생깁니다.

버튼을 누르면 코드가 컴파일(Compile)되어 실행(Run)됩니다.

 

와! Error!

실행을 해보니 오류가 발생합니다.

오류가 발생한(Error: (10, 5) 참고) 10번째 줄을 보니 b = 20을 사용한 줄입니다.  

변수 b는 val로 선언되어있습니다.

 

val로 선언된 변수는 값을 읽기만 가능하고 쓸 수가 없습니다. 즉, 처음 변수를 만들 때 값을 정해준 이후로 다시 값을 변경할 수가 없습니다.

반대로 var은 읽기, 쓰기 모두 가능합니다.

 

Kotlin의 val 키워드는 Java에서 final 키워드로 쓰입니다.

val 키워드를 var로 변경 후 다시 실행해주면 정상적으로 작동합니다.

 

(깜빡하고 줄바꿈을 안했는데 \n을 사용하여 줄바꿈을 할 수 있습니다. 밑 예제에서 다시 보여드리겠습니다.)

a의 변수 값은? 1b의 변수 값은? 2바뀐 a의 변수 값은? 10바뀐 b의 변수 값은? 20

자료형 알아보기

자료형에는 여러 종류가 있습니다. 여기서는 숫자(정수, 실수)만 다뤄보고 이를 표로 정리하면

(아래 표에는 정수, 실수 외 문자열과 논리형에 관한 자료형을 추가하였습니다. 참고해주세요!)

 

구분 자료형 표현 범위(크기)
정수 Byte 8 비트
Short 16 비트
Int 32 비트
Long 64 비트
실수(부동소수점) Float 32 비트
Double 64 비트
문자 (글자 하나) Char -
문자열 (글자 하나 이상) String -
논리(true, false) Boolean -

 

TMI) C언어에서는 char이라는 자료형을 정수를 표현하는데 쓸 수 있습니다. 하지만
Kotlin에서는 쓸 수 없습니다.

이와 같이 나타낼 수 있습니다.

일반적인 정수는 Byte, Short, Int, Long을 사용하며 주로 Int를 사용하고 표현 범위가 넓어야 한다면 Long을 사용하는 편입니다.

 

실수는 Float, Double을 사용합니다. (부동소수점에 관해서는 https://ko.wikipedia.org/wiki/부동소수점 참고)

 

이제 Kotlin에서 직접 사용해봅시다.

이번에는 kr.skylightqp.learning 패키지 안에 DataType.kt라는 새로운 파일을 만들어서 해보겠습니다.

fun main(){
    val b: Byte = 1
    val s: Short = 2
    val i: Int = 3
    val l: Long = 4L // L을 이용하여 Long 형이라는 것을 명시해줍니다.
    val f: Float = 9.0f // f 또는 F를 이용하여 Float 형이라는 것을 명시해줍니다.
    val d: Double = 10.99995

    print("Byte: $b\n")
    print("Short: $s\n")
    print("Int: $i\n")
    print("Long: $l\n")
    print("Float: $f\n")
    print("Double: $d\n")
}

 

main() 괄호 안에 들어있는 내용은 생략이 가능합니다.

 

이렇게 각각의 자료형을 이용하여 코드를 작성하고 실행하면,

Byte: 1
Short: 2
Int: 3
Long: 4
Float: 9.0
Double: 10.99995

변수에 넣어준 값이 정상적으로 나옵니다.

 

마무리

이번 글에서는 변수와 자료형을 알아보았습니다.

다음 편에서는 아마도 Nullable, 연산자에 관하여 다루지 않을까 싶습니다.

피드백은 언제나 받고 있습니다! 감사합니다 :D

 

 

* 본문에서 키워드는 var, val, Int, Long, fun 등과 같이 프로그래밍 언어에서 명령 등으로 사용되는 단어들을 말합니다.

 

 

 

수정 19-05-27)

문자, 문자열, 논리형에 관한 자료형을 추가하였습니다.

 

 

댓글
댓글쓰기 폼