코틀린(Kotlin)

코틀린(kotlin) : 기본 타입 : Numbers, Characters, Booleans, Arrays

알통몬_ 2018. 1. 25. 17:08
반응형


공감 및 댓글은 포스팅 하는데

 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 

도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 

만들어 나가겠습니다^^

 


이번 포스팅에서는 코틀린의 기본 타입에 대해 공부합니다.


기본 타입

멤버 함수와 속성을 변수에 call 할 수 있다는 점에서 코틀린에서 모든 것들은 객체입니다.

일부 타입들은 특별한 내부 표현을 가질 수 있습니다.

예를 들어: Numbers, Characters, booleans 타입들은 

유저에게는 일반 클래스처럼 보일 수 있지만, 런타임 시에 윈시 값으로 표현됩니다.


Numbers

코틀린에서 숫자를 핸들링할 때는 자바와 유사하지만 완전히 같지는 않습니다.

일부 리터럴이 다르고, 숫자에 대한 암시적 변환이 없습니다.


숫자타입        과   비트 길이

Double 타입             64

Float 타입                32

Long 타입                64

Int 타입                   32

Short 타입               16

Byte 타입                 8


예제:

fun main(args: Array<String>) {
val a: Int = 123
val b: Long = 123L
val c: Float = 123.0f // f or F
val d: Double = 123.0
val e = 0x0f // 16진수
val f = 0b00001011 // 2진수

println("Int 타입 : $a")
println("Long 타입 : $b")
println("Float 타입 : $c")
println("Double 타입 : $d")
println("16진수 : $e")
println("2진수 : $f")
}

출력 결과:


1.1버전부터는 _(밑줄 문자 : underscore)를 이용한 표현도 가능합니다.

 


fun main(args: Array<String>) {
val oneThousand = 1_000
val creditCardNum = 1111_2222_3333_4444L
println(oneThousand)
println(creditCardNum)

}

출력결과 :

1000

1111222233334444


공식 문서와 실제 실행 결과가 다른 것이 있어서 추가합니다.

=== 와 == 의 결과가 다른 것을 볼 수 있는데요.

intelij 에서 실행해보니 전부 true가 나오네요 ㅎㅎ 머징;;;


fun main(args: Array<String>) {
val i = 10
val newi: Int? = i
val new2i: Int? = i
println(i === i)
println(newi === new2i)
println("==========")
println(i == i)
println(newi == new2i)


}


명시적 타입 변환

자바는 크기가 작은 타입은 큰 타입으로 자동타입 변환되지만,

코틀린에서는 그렇지 않습니다.

코틀린에서는 항상 명시적으로 타입 변환을 해주어야 합니다.

명시적 타입 변환 메서드 사용 예제

val i2 : Int = 100
val b2 : Byte = i2.toByte()
val s2 : Short = i2.toShort()
val l2 : Long = i2.toLong()
val f2 : Float = i2.toFloat()
val d2 : Double = i2.toDouble()
val c2 : Char = i2.toChar()

println(b2)
println(s2)
println(l2)
println(f2)
println(d2)
println(c2)


* 아래와 같은 형태의 자동 타입 변환은 됩니다.

val d : Double? = 1L + 3.0
val l : Long = 10L + 30


비교 연산

 Equals 연산  a == b or a != b

 크기 비교 연산  a >b or a < b

 범위 화 및 범위 연산

a..b (a ~ b), i in a..b( i 가 a ~ b 사이에 존재하는가), i !in a..b( i in a..b 와 반대)

* -0.0은 0.0 보다 작은 것으로 간주합니다.


Characters

문자는 Char 타입으로 표현됩니다.

Char 타입은 'a' 처럼 사용합니다. 큰 따옴표가 아닌 작은 따옴표 안에 하나의 문자만

사용 가능합니다.


Char 타입은 Number로 바로 사용할 수 없고, 변환을 해야합니다.

toInt() 등의 메서드로 알맞은 타입으로 변환하여 사용하면 됩니다.


Booleans

Boolean 타입은 true 이나 false 값을 가집니다.

a || b : a 나 b 중 하나만 true 면 true 반환

a && b : a 와 b 둘다 true 경우만 true 반환

!a : a가 false이면 true 반환 


Arrays

배열은 코틀린에서 Array 클래스로 존재하고 get 과 set 함수를 가집니다.

size 라는 프로퍼티도 있습니다.

배열을 만드는 방법은 다양합니다.


fun main(args: Array<String>) {
// 정수 배열을 만듬.
val arrays = Array(10, { a -> (a + a)})
for( i in arrays ){
println(i)
}
println("====================")
val arrays2 = intArrayOf(10, 20, 30, 40)
for( i2 in arrays2 ) {
println(i2)
}
}

상황에 맞게 두 방법 중 골라서 사용하면 되겠습니다.

Strings

String 문자열 타입은 "hello world" 처럼 큰 따옴표 안에 문자를 넣어 사용합니다.

한 변수에 여러 줄의 문자열을 저장할 수도 있습니다.


fun main(args: Array<String>) {
val c : String = "Hello world"
var c2 : String = """
H
e
l
l
o
w
o
r
l
d
"""

println(c)
print(c2)

}


문자열에 다른 타입을 변수를 같이 사용할 수도 있습니다.

$ or ${} 를 사용하면 됩니다.


fun main(args: Array<String>) {
val age = 27
val str = "I'm $age, and my brother ${age + 1}"
print(str)

}


이상입니다.

다음 포스팅에서는 피키지와 임포트에 대해 공부합니다.


반응형