관리 메뉴

피터의 개발이야기

[Kotlin] 데이터 타입 본문

Programming/Kotlin

[Kotlin] 데이터 타입

기록하는 백앤드개발자 2024. 5. 12. 10:10
반응형

ㅁ 들어가며

Kotlin Docs-기본 타입devkuma-Kotlin 데이터 타입를 보면서 코틀린 공부를 하면서 정리하였다.

 

ㅁ 기본 데이터 타입

var a: Boolean = true     // 논리 (true, false)

// Integer types
var b: Byte = 123         // 8 트 정수 (-128 ~ 127) 
var c: Short = 123        // 16비트 정수 (-32768 ~ 32767) 
var d: Int = 123          // 32비트 정수 (-2 31승 ~ 2 31승 -1) 
var e: Long = 123L        // 64비트 정수 (-2 63승 ~ 2 63승 -1) 

// Floating-point types
var f: Float = 12.3F      // 32비트 부동 소수점
var g: Double = 12.3      // 64비트 부동 소수점 

// Characters
var h: Char = 'A'         // 문자 (글자 하나)
var i: String= "ABC"      // 문자열

 

Numbers 

123          10진수 (Int) 
123L         10진수 (Long) 
0x0F         16진수 
0b10111100   2진수 
123.4        실수 (Double) 
1.23e2       실수 (Double) 
123.4f       실수 (Float) 
1.23e2       실수 (Float) 
12_345_678   자리 구분

ㅇ Kotlin에서는 8진수 리터럴이 지원되지 않습니다.

ㅇ 소수점:123
ㅇ 롱은 대문자로 태그가 지정됩니다 L.123L
ㅇ 16진수:0x0F
ㅇ 바이너리:0b00001011

 

val oneMillion = 1_000_000
val creditCardNumber = 1234_5678_9012_3456L
val socialSecurityNumber = 999_99_9999L
val hexBytes = 0xFF_EC_DE_5E
val bytes = 0b11010010_01101001_10010100_10010010

ㅇ 밑줄은 무시되어 밑줄을 사용하여 숫자 상수를 더 읽기 쉽게 만들 수 있습니다.

Booleans

val myTrue: Boolean = true
val myFalse: Boolean = false
val boolNull: Boolean? = null

println(myTrue || myFalse)
// true
println(myTrue && myFalse)
// false
println(!myTrue)
// false
println(boolNull)
// null

Characters

ㅇ char: 문자는 작은 따옴표로 구분한다.

'A'

ㅁ 이스케이프 시퀀스

\t 		// 탭
\b 		// 백스페이스
\n 		// 새 줄(LF)
\r 		// 캐리지 리턴(CR)
\' 		// 작은따옴표
\" 		// 큰따옴표
\\ 		// 백슬래시
\$ 		// 달러 표시
\uFF00  	// Unicode 문자

println('\n') // 새 줄이 출력된다.
println('\uFF00') // ＀

ㅁ 형변환

123.toString()        // Int에서 String으로 변환 
"123".toInt()         // String을 Int로 변환 
"3.14".toInt()        // String을 Int로 변환 (변환 할 수 없는 경우는 null) 
1.23.toInt()          // Double에서 Int로 변환 (잘라 내기) 
1.23.roundToInt()     // Double에서 Int로 변환 (반올림)

ㅁ String

"ABCDEF"

 

ㅇ String templates

var a = 1
// simple name in template:
val s1 = "a is $a" 

a = 2
// arbitrary expression in template:
val s2 = "${s1.replace("is", "was")}, but now is $a"

 

ㅇ String formatiting

// 0추가
println(String.format("%07d", 31416)) 
// 0031416

// 소수점 자리
println(String.format("%+.4f", 3.141592)) 
// +3.1416

// 대문자 출력
println(String.format("%S %S", "hello", "world")) 
// HELLO WORLD

 

ㅇ 여러 줄 String

val text = """
    for (c in "foo")
        print(c)
"""

Range

# Iterate
for (x in 1..5) print(x)		//12345
for (x in 1.rangeTo(5)) print(x)	//12345
for (x in 1..10 step 2) print(x)	//13579
for (x in 9 downTo 0 step 3) print(x)	//9630

 

# If 안의 ranges
if (n in 1..10) println("OK")  // n이 1~10에 포함된다면...
if (n !in 1..10) println("OK") // n이 1~10에 포함되 않는면...

# Char, String, Double 등으로도 사용할 수 있다.
if ('b' in 'a'..'z') println("OK")
if ("gz" in "aa".."zz") println("OK")
if (1.23 in 0.00..9.99) println("OK")

# list + if
val list = listOf("a", "b", "c")
if (-1 !in 0..list.lastIndex) {
    println("-1 is out of range")
}
if (list.size !in list.indices) {
    println("list size is out of valid list indices range, too")
}

ㅁ 데이터 타입 체크

# 타입 체크
if (obj is String) print("it's String")
if (obj !is String) print("Not a String")

 

# Class 체크 시 부모 인스턴스를 확인한다.

open class ClassA() {}
class ClassB(): ClassA() {}
var a = ClassA()
var b = ClassB()
println(a is ClassA)		// true
println(a is ClassB)		// false
println(b is ClassA)		// true
println(b is ClassB)		// true

 

# when을 이용한 체크
fun foo(a: Any) {
    when (a) {
        is String -> println("String")
        is Char -> println("Char")
        else -> println("Unknown")
    }
}

다이나믹 형

Kotlin은 정적 타입 언어이지만, JavaScript로 컴파일 시 dynamic을 사용하여 동적 형변환이 가능하다.

var a : dynamic 
a = 123       // 수치를 대입 
a = "ABC"     // 문자열을 대입

ㅁ 함께 보면 좋은 사이트

Kotlin Doc - Basic types

youtube - Kotlin 강좌 #2 - 변수와 자료형

반응형

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

[Kotlin] 변수 선언  (0) 2024.05.14
[Kotlin] 기본 자료형과 참조 자료형  (0) 2024.05.13
[Kotlin] 기본 문법  (0) 2024.05.11
[Kotlin] 개발 환경 세팅  (0) 2024.05.09
[kotlin] 코틀린 개요  (0) 2024.05.08
Comments