일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 코테
- JavaScript
- 개발자 회고록
- Kotlin
- 코딩테스트
- 리눅스
- Linux
- map
- 자바
- 프로그래머스
- 백준 java
- java 백준 1차원 배열
- 반복문
- 월간코드챌린지
- 문자열
- 카카오
- GoingBus
- 백준 javascript
- toCharArray
- Memoir
- 리눅스마스터1급
- 리눅스마스터 1급 정리
- 고잉버스
- 명령어
- 스프링 빈
- 스프링 컨테이너
- 리눅스마스터 3과목
- 자바스크립트 코딩의 기술
- 연습문제
- Java
- Today
- Total
hoon's bLog
Kotlin 정수 타입 본문
정수타입
코틀린에는 정수를 표현하는 네 가지 타입이 있다.
네 가지 타입은 다음과 같고, 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
'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 |