코틀린 독학 하기 4

Table of Contents

코틀린 독학 하기 4

코틀린 독학

기본 타입

정수타입

이름크기(바이트범위대응하는 자바 타입
Byte1-128 …127Byte
short2-32768 … 32767Short
Int4-231 …. 231-1
Int
Long8-263…… 263-1Long

어떤 정수 타입 값을 표현하는 가장 간단한 리터럴은 10진수다

val n = 1234

1234가 리터럴이다

리터럴에 _를 넣어서 가독성을 높일 수 잇다.

val n = 34_123_345

리터럴에 L이나 l을 접두사로 붙이면 Long 타입이 된다

val hundredLong = 100L

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

val bin = 0b10101 //21

val hex = 0xF9 // 249

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

val zero = 0 //된다

val zeroOne = 01 // 안된다 . 에러

-10과 같은 음수는 기술적으로는 리터럴이 아니다. 음수는 단항 음수 연산자(-)를 리터럴에 적용한 식이다.

val neg = -10

val negHex = -0xFF

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

short.MIN_VALUE

short가 타입이름

부동소수점 수

10진 소수 형태

val pi = 3.14

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

.25는 가능하지만 1. 은 에러가 난다.

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

val pi = 0.314E1 // 3.14 = 0.314*10

E뒤에 1이 있으면 이는 10을 한번 곱하라는 것이다. 만약 3이 오면 10을 3번 거듭곱한다. 즉 1000을 곱하게 된다

디폴트로 부동소수점 리터럴은 Double타입이다. f나 F를 리터럴 뒤에 붙이면 Float 타입이 된다.(f나 F를 붙이는 경우 소수점을 포함한 소수 부분을 생략할 수 있다)

val pi= 3.14f

val one = 1f

Float 리터럴이 double 타입으로 자동 변환되지 않는다.

val pi : Double = 3.14f // 에러

Float와 Double도 각 타입의 특별한 값을 표현하는 몇 가지 상수를 제공한다.

MIN_VALUE, MAX_VALUE : 각 타입에서 표현할 수 있는 가장 작은 유한값과 가장 큰 유한값

NEGATIVE_INFINITY, PISITIVE_INFINITY : 음의 무한대와 양의 무한대, 각 타입이 표현할 수 있는 가장 작은 값과 가장 큰 값

NAN: 0/0의 결과처럼 숫자가 아닌 값을 의미

산술연산

덧셈(+), 뺄셈(-), 곱셈(*), 나눗셈(/), 나머지(%) 를 사용한다

5+2 = 7

5-2 = 3

5*2 = 10

5/2 = 2

5%2 = 1

메서드

floorDiv() : 나눗셈 (/) 와 마찬가지

mod() : 정수 나머지(%) 와 마찬가지

각 이항 산술 연산마다 모든 가능한 수 타입간의 연산을 지원하기 위한 변종이 함께 제공된다. double + int 가 가능하다는 것이다. 그러므로 타입이 여섯가지이므로 각 연산마다 6*6 = 36가지 버전이 있다. 이러한 산술 연산의 결과는 인자 중 더 큰 의미를 지니는 타입이 된다.

Double > Float > Long > Int > Short >Byte

대부분의 타입에서는 이는 해당 타입이 표현할 수 있는 값의 범위가 더 넓다는 뜻이다. 하지만 항상 그렇지는 않다. 분명한 예로 Long 에서 Float으로 변환되는 경우다. 이 경우 일부 유효 자리 숫자를 잃고 정밀도precision가 떨어지게 된다

int + byte // 2:Int

int + long // 2 : Long

long + Double // 2.5 : Double

float + double // 3.0 : Double

float + int // 2.5 : Float

long + double // 2.5 : Double

  1. long:
    • 64비트 크기를 가지며, 부호 있는 정수를 표현합니다.
    • 범위: -9,223,372,036,854,775,808에서 9,223,372,036,854,775,807까지입니다.
    • 최소값: Long.MIN_VALUE 또는 -9,223,372,036,854,775,808
    • 최대값: Long.MAX_VALUE 또는 9,223,372,036,854,775,807
  2. float:
    • 32비트 크기를 가지며, IEEE 754 부동 소수점 표현 방식을 사용합니다.
    • 범위: 대략적으로 1.4E-45에서 3.4E38까지입니다.
    • 최소값: Float.MIN_VALUE 또는 대략적으로 1.4E-45
    • 최대값: Float.MAX_VALUE 또는 대략적으로 3.4E38

주의할 점은 float은 부동 소수점의 한계로 인해 정밀도 손실이 발생할 수 있습니다. 특히 큰 값 또는 작은 값에서는 정확한 표현이 어려울 수 있습니다. 만약 정밀도가 중요한 경우라면 double을 고려하는 것이 좋습니다.