hoon's bLog

Kotlin 정수 타입 본문

IT/Kotlin

Kotlin 정수 타입

개발한기발자 2023. 8. 14. 09:14
반응형


정수타입

코틀린에는 정수를 표현하는 네 가지 타입이 있다.

네 가지 타입은 다음과 같고, Java에서 쓰이는 타입과 유사하다.

이름 크기(byte) 범위 대응하는 Java 타입
Byte 1 -128 ~ 127 Byte
Short 2 -32768 ~ 32767 Short
Int 4 -2³² ~ 2³¹-1 Int
Long 8 -2⁶³ ~ 2⁶³-1 Long

10진수 : 정수타입 표현의 가장 간단한 리터럴은 10진수다.

val n = 12345

수 리터럴에 '_'를 넣어 가독성을 높일 수 있다. 아주 큰 수를 나타낼 때 '_'가 유용하다.

val n = 34_721_189

리터럴 자체 타입은 그 수를 2진수로 표현했을 때 크기에 따라 Int 일수도, Long 일수도 있다.
범위만 맞으면 리터럴을 크기가 더 작은 타입의 변수에 대입해도 된다.

val one: Byte = 1 // OK
val tooBigForShort: Short = 100_000 // Error : too big for Short
val million = 1_000_000 / OK : Int로 타입 추론
val tooBigForInt : Int = 10_000_000_000 // Error : too big for Int
val tenBillions = 10_000_000_000 // OK : Long 으로 타입 추론
val tooBigForLong = 10_000_000_000_000_000_000 // Error : too bif for Long

Long 타입 : 리터럴에 L이나 1을 접두사로 붙이면 long 타입이 된다.

val hundredLong = 100L
val hundredint: Int = 100L

2진수, 16진수 : 앞에 0b(2진수)나 0x(16진수)를 붙여 2진수나 16진수로 수 리터럴을 작성 할 수 있다.

val bin = 0b10101 // 21
val hex = 0xF9 // 249

0 리터럴 금지 : 수 리터럴 경우 0을 표현하는 경우가 아니면 맨 앞에 0이 올 수 없다.

val zero = 0 // OK
val zeroOne = 01 // Error

최소 최댓값 상수정의
각 정수 타입에는 최솟값(MIN_VALUE) 최댓값(MAX_VALUE)을 포함하는 상수 정의가 들어 있다.
이런 상수를 사용하려면 앞에 타입 이름을 붙여야 한다.

Short.MIN_VALUE // -32768
Short.MAX_VALUE // 32767  
Int.MAX_VALUE + 1 // -2147483648 (정수 overflow)

부동 소수점수
Kotlin도 IEEE754 부동소수점수를 따르는 Float와 Double을 제공한다.
이 둘은 Java의 float와 double에 대응한다.

이름 크기(byte) 범위 대응하는 Java 타입
Float 4 1.4E-45 ~ 3.402823510308 Float
Double 8 4.9E-324 ~ 1.797693134862315710308 Double

부동소수점수 : 부동소수점수 리터럴의 가장 단순한 형태는 10진 소수형태로, 정수와 소수 부분을 나눠 소수점(.)을 찍어 놓았다.

val pi = 3.14
val one = 1.0

정수 부분이 빈 경우 정수 부분을 0으로 간주한다.
하지만 소수점을 남기면서 소수 부분을 생략할 수 없다.

val quarter = .25 // 0.25
val one = 1. // Error : expecting an element
val two = 2 // 오류는 아니지만, 정수 리터럴임.

코틀린은 과학적 표기법 리터럴을 허용한다.
과학적 표기법은 e나 E 뒤에 10을 몇 번 거듭제곱하는지 알려주는 숫자표시이다.

과학적 표기법에서는 소수 부분(소수점 포함) 생략할 수 있다.

val pi = 0.324E1  // 3.14 = 0.314 * 10
val pi100 = 0.314E3 // 314.0 = 0.314 * 1000
val piOver100 = 3.14E-2 // 0.0314 = 3.14 / 100
val thousand = 1E3 // 1000.0 = 1 * 1000

자바 VS 코틀린

  • 코틀린에서는 Double이나 Float의 16진 리터럴을 지원하지 않는다.
  • 디폴트로 부동소수점 리터럴을 Double이다.
  • f나 F를 리터럴 뒤에 붙이면 Float 타입이 된다.(f, F를 붙이는 경우 소수점을 포함한 소수 부분은 생략가능)
val pi = 3.14f
val one = 1f
  • 자바에서는 D나 d를 부동소수점 뒤에 붙여 강제로 double 타입 변환 가능.
  • 코틀린에서는 이런 접미사를 허용하지 않고, 부동소수점 디폴트는 Double이다.
  • Float 리터럴이 자동으로 Double 타입으로 변환되지 않는다.
val pi: Double = 3.14f // Error

Float, Double의 특별상수 : Float, Double도 각 타입의 특별한 값을 표현하는 상수를 제공한다.

  • MIN_VALUE, MAX_VALUE : 각 타입에서 표현할 수 있는 가장 작은 유횻값과 가장 큰 유한값
  • NEGATIVE_INFINITY, POSITIVE_INFINITY : 음의 무한대와 양의 무한대, 각 타입이 표현할 수 있는 가장 작은 값과 가장 큰 값.
  • NaN : 0/0의 결과처럼 숫자가 아닌 값을 의미.
println(Float.MIN_VALUE)   // 1.4E-45
println(Double.MAX_VALUE)   // 1.797693134862315710308
println(Double.POSITIVE_INFINITY)   // Infinity
println(1.0 / Double.NEGATIVE_INFINITY)   // - 0.0
println(2 - Double.POSITIVE_INFINITY)   // -Infinity
println(3 * Float.NaN)   // NaN

이렇게 Kotlin의 정수타입에 대해서 알아봤다.

사실 기본 타입은 모든 언어가 거의 비슷해 보이는 듯하다 ㅎㅎㅎ

특히 Kotlin은 Java랑 매우 유사한 부분이 많아,

Java를 알고 있다면 Kotlin을 익히는데 꽤나 수월할 것 같다.

(지인들은 한번 Kotlin으로 넘어오면 Java로 돌아갈 수 없다는 썰도..ㅋㅋㅋ)

 

언제나 새로운 정보 공유와 잘못된 정보

비판/지적/태클은 환영입니다!

도움이 되셨다면 공감♥️, 댓글 부탁드려요:)

끝.

Reference

https://wikidocs.net/173864

728x90
반응형

'IT > Kotlin' 카테고리의 다른 글

Kotlin boolean 타입 및 비교 연산  (4) 2023.09.13
Kotlin char 문자 타입  (0) 2023.08.24
Kotlin 식별자, 가변변수, 연산  (1) 2023.08.11
Kotlin 변수 선언 하기  (1) 2023.08.08
Kotlin REPL Playground 코틀린 기능 툴 사용  (5) 2023.08.03