좋습니다
그럼 이제 데이터 종류들을 살펴봅시다
Kotlin은 좋은 공식 문서를 제공합니다
그러니 언제든 읽어보시는 것을 권장합니다
ChatGPT의 도움을 받아 설명을 들을 수도 있습니다
다섯 살도 이해할 수 있을 만큼 쉽게 설명해 줄 것입니다
그래도 공식 문서를 빠르게 훑어보며 Kotlin 내 기본적인 Types(종류)들에 대해 알아보고
추가적인 정보를 얻어보겠습니다
그럼 Basic Types(기본 종류)들을 살펴봅시다
좋습니다
현재 kotlinlang.org/docs/basic-types.html 페이지에 있습니다
그리고 Concepts 하위 메뉴에
Basic Types가 있습니다
Type checks and casts라는 것도 있지만
현재로써는 Basic Types에 중점을 두려고 합니다
Kotlin에서는 모든 것이 object(객체)이므로 variable(변수)에서 멤버 함수나 속성들을
호출할 수 있습니다
벌써부터 이해하기가 어렵습니다
만약 여러분이 입문자라면
저는 더 이상 입문자가 아니지만
입문자에게는 이러한 개념이 복잡하게 들릴 수 있습니다
자
하지만 조금만 설명해 보고 자세한 건 나중에 다시 살펴보겠습니다
그리고 무언가를 더 쉽게 이해하기 위해 ChatGPT를 사용하는 방법도 알려드리겠습니다
이 페이지에 나온 것들을 더 자세하게 이해하고 싶다면 말입니다
좋습니다
다음 문장으로 넘어가 보겠습니다
어떤 종류들은 특별한 내부 표현법이 있을 수 있습니다
예를 들어 숫자, 문자, boolean(불리언)은 실행 시 primitive value(원시 값)으로 표현될 수 있습니다
하지만 사용자들에게는 평범한 클래스로 보입니다
자
아직 우리는 class(클래스)가 무엇인지 모릅니다
object(객체)가 무엇인지도 모릅니다
이 문서는 굉장히 주요 개념을 설명해주고 있으며 이 지식을 기반으로
추후에 많은 것을 다루게 될 것이고 자연스럽게 습득하게 될 지식의 흐름입니다
이 설명은 입문자에게는 적절하지 않다고 생각되긴 하지만 Overview 부분은 나쁘지 않습니다
좋습니다
그러니 계속 살펴보겠습니다
Numbers and their unsigned counterparts (숫자 및 부호가 없는 버전)
numbers(숫자)부터 살펴보겠습니다
Kotlin은 integer(정수)를 표현하는 일련의 내장 type들을 제공합니다
네 종류가 있으며 다른 크기와 값의 범위를 갖고 있습니다
integer 숫자들은 쉽게 말해 자연수라는 뜻입니다
소수점이 없습니다
온전한 숫자들입니다
하지만 숫자의 자릿수 혹은 숫자의 길이에 따라
종류가 다릅니다
이렇게 다른 종류들이 있는 이유는 무엇일까요?
만약 여러분이 매우 성능적인 애플리케이션을 만들고 싶다면
최대한 적은 양의 데이터나 저장소를 사용하는 type(종류)를 사용해야 할 것입니다
예를 들어 여길 보시면 Type이 보이고 Size도 보입니다
그리고 Size(크기)가 bits 단위로 되어 있으며 Min Value(최소 값)과 Max Value(최대 값)도 마찬가지입니다
자
지금은 Integer types를 살펴봅시다
Byte는 8 bits를 갖고 있습니다
그래서 type 이름이 Byte인 것입니다
여러분의 하드 드라이브를 보시면 가령 1 Terabyte 정도가 있을 것입니다
이 1 Terabyte는 대강 8 Terabit인 셈입니다
이런 개념으로 Byte와 Bit가 사용되는 것입니다
최소 값은 -128이고 최대 값은 127입니다
이 수치는 어떻게 나왔을까요?
숫자 2를 8번 제곱해 주는 것입니다
2의 8승은 256입니다
그리고 256을 2로 나눈 다음 0을 기준으로 128은 음수 쪽에
나머지 128은 양수에 줍니다
그리고 물론 0도 포함되어 있어야 합니다
그렇습니다
그렇기 때문에 여기서 128까지 도달하지 않는 것입니다
0이 사이에 있기 때문입니다
그러니까 -128부터
0까지 포함해서 127까지인 것입니다
이런 식으로 Byte가 나오게 됩니다
그리고 이것을 성능적인 그래픽 애플리케이션을 위해 사용할 수 있으며
매우 작은 정보 예를 들어 1에서 100이나 -100에서 100의 숫자를 저장해야 하는 경우
Byte를 사용하는 것입니다 이런 경우 여기 Interger 같이
32비트
즉 4배나 더 많은 저장 공간을 요구하는 종류는 필요 없다는 뜻입니다
RAM(램) 공간을 차지하기 때문입니다
아마도 Read Access Memory의 약자일 것입니다
그러니까 이게 무슨 개념이냐면 종류를 넘어갈 때마다 지수에 두 배를 곱하는 것입니다
그러므로 2의 8승에서 2의 16승이 되는 것입니다
그건 Short이라는 데이터 종류이며
이는 -32768에서 32767까지 있습니다
역시 0이 사이에 있습니다
아마 2의 16은 65556입니다
그러니 이 종류는 더 큰 숫자를 위함입니다
하지만 이보다 더 큰 숫자를 사용한다면 Int를 사용하게 되며 이는 주로 기본 값으로 사용됩니다
요즘 시대에는 저장 공간이 큰 문제가 되지 않기 때문입니다
RAM 공간 또한 큰 제약이 되지 않습니다
주로 충분한 공간이 있습니다
그래서 대부분의 variable(변수)들은 기본 값으로 Int를 사용합니다
사용이 자유로워지기 때문입니다
-2의 31승에서 2의 31승까지입니다
마찬가지로 0이 포함되어 있으며 대강 -20억에서
20억까지의 범위를 제공합니다
만약 이보다 더욱 긴 숫자를 저장하고 싶다면 Long 데이터 종류를 사용해야 합니다
-2의 63승부터인데 숫자를 읽을 수조차
없습니다
아마 10억, 100억, 1000억 다음 조 단위로 넘어갑니다
아마 경 단위인 것 같습니다
영어로는 어떻게 이 수를 표현하는지 모르겠습니다
불어로는 Million, Milliarde, Billion, Billiard
그리고 Trillion이라고 읽습니다
9 Trillion(9경)이라는 숫자입니다
엄청난 숫자입니다
아주 길고 큰 숫자를 저장할 수 있는 것이며 Long을 사용해 전화 번호 등을 저장할 수 있습니다
꽤 효율적인 방법입니다
자
만약 데이터를 저장하고 싶다면 여기 보시다시피 val 이라는 것을 사용합니다
자
variable(변수)를 생성하고 이름을 짓습니다 (*Kotlin에서는 변수를 선언하는 2가지 키워드가 있습니다: val 과 var입니다. val은 불변하는 값에 사용되며 val을 사용해 선언된 변수의 값은 재할당할 수 없습니다. 변동될 수 있는 값의 변수는 var로 선언해야 합니다*)
Kotlin에서 사용되는 variable의 키워드는 val입니다
그러니까
자동적으로 Int로 저장될 것입니다
특별히 우리가 이 1을 Int로 저장하고 싶다고 명시하지 않았지만 자동적으로
그렇게 합니다
그러니 만약 Byte든 Short이든 특정 데이터 종류로 저장하고 싶다면 구체적으로 명시해야 합니다
그렇지 않으면 Kotlin은 정수에 속하는 값들은
자동으로 Int로 여깁니다
만약 30억과 같은 수를 사용한다면 Int 범위에서
Long으로 넘어갑니다 보시다시피 20억에는 들어가지 않기 때문입니다
이런 경우 자동으로 데이터가 Long으로 저장됩니다
다른 프로그래밍 언어에서는 여러분이 변수에 사용하고 싶은 데이터 종류를 꼭 정의해야
합니다
하지만 Kotlin에서는 그러지 않아도 됩니다
그저 변수에 값을 할당하기만 하면 됩니다
그러면 알아서 데이터 종류를 추론하여 변수에 데이터 종류를 할당합니다
자동으로 되는 것입니다
그래서 만약 30이라는 숫자를 넣으면
알아서 바로 Long 값으로 저장합니다
좋습니다
만약 나중에 큰 숫자를 사용할 예정이거나
나중에 자유롭게 숫자를 다루기 위해 1을 Long 데이터 종류로 저장하고 싶다면
그런 경우 정확히 명시해야 하는데 1 옆에 L을 표기하면 됩니다
그러면 그 변수는 큰 숫자를 다룰 수 있는 유동성을 갖게 됩니다
9경까지 말입니다
정확히는 -9경에서 9경 범위 내의 숫자입니다
그리고 그 1을 구체적으로 Byte로 저장하고 싶다면 val 키워드를 사용한 다음
변수의 이름을 써준 다음에 콜론 기호(:)를 붙히고 한 칸 띄워서 데이터 종류를 입력해 줍니다
Byte를 사용하고 싶다고 했으니 Byte를 입력해 주는 것입니다
데이터 종류의 이름입니다
여기에 1을 저장할 수 있습니다
좋습니다
간단한 예시였습니다
그럼 넘어가서 이것들이 실제 코드에서는 어떻게 적용되는지 살펴보고 다른 데이터 종류들을 살펴보겠습니다
그리고 ChatGPT를 사용해 공식 문서보다 더 나은 설명을 얻을 수 있는 방법도 알려드리겠습니다
혹시나 이해하지 못하신 분들을 위해서 드리는 팁입니다