티스토리 뷰
※ 이해와 학습을 위해 원본 코드의 추가/수정이 있을 수 있습니다.
※ 인프런 강의: 개복치개발자님의 [입문편] 안드로이드를 위한 코틀린(Kotlin) 문법의 학습 기반으로 작성했습니다.
※ InterviewBit Kotlin 설명을 참고합니다.
※ 정보의 공유 사회(https://ddolcat.tistory.com/) 설명 및 예제를 참고합니다.
※ Programize(http://learning.coreref.com/www.programiz.com/kotlin-programming) 설명 및 예제를 참고합니다.
※ Udemy The Complete Android 12 & Kotlin Development Masterclass 설명 및 예제를 참고합니다.
- Kotlin 데이터 타입

- 자료형의 타입 자체를 출력하기
println(변수::class.java.simpleName)
- 변수의 keyword
- val: immutable(변경 불가능)
- var: mutable(변경 가능)
- 자료형의 선언
//변수명 : 자료형
val test1 : Int
val test2 : String
- 자료형 변환하기
fun main(){
// 정수형을 문자형으로
val test9: Int = 1234
val test10 = test9.toString()
println(test10::class.java.simpleName)
// 문자형을 정수형으로
val test11 : String = "1234"
val test12 = Integer.parseInt(test11)
println(test12::class.java.simpleName)
}
결과
=========================
String
int
- generic
// 제네릭(generic)
// 컴파일시에 타입 체크를 할 수 있다
// 타입 캐스팅이 필요 없다
fun main() {
val box1 = Box(10)
println(box1.value)
println(box1.value::class.java.simpleName)
val box2 = Box("10")
println(box2.value)
println(box2.value::class.java.simpleName)
val box3 = testFun(10)
println(box3)
println(box3::class.java.simpleName)
val box4 = testFun("10")
println(box4)
println(box4::class.java.simpleName)
}
class Box<T>( test : T ){
var value = test
}
fun <T> testFun( a: T ) : T {
return a
}
결과
=====================
10
Integer
10
String
10
int
10
String
- Any/is/as
// Any
// 이름처럼, 아무거나 할 수 있는 느낌?
// 모든 아이들을 포함하는 조상같은 친구?
//
// is와 as
// is -> 맞나? 확인 (데이터 타입을 비교할 때)
// as -> type casting -> 타입 변경/체크
fun main() {
var str1 : String = "abc"
println(str1)
//str1 = 123
//println(str1)
// 타입 에러가 남 : The integer literal does not conform to the expected type String
//var str2 : Any = "abc"
//println(str2)
//str2 = 123
//println(str2)
var str3 : Any = "abc"
if(str3 is String){
println("This is string")
} else{
println("This is not string")
}
var str4 : Any = "abc"
when(str4){
is Int -> { println("This is Int")}
is String -> { println("This is String")}
else -> { println("This is else")}
}
var str5 : String = "abc"
var str6 : String = str5 as String
println(str6)
//var str7 : Int = 1
//var str8 : String = str7 as String
//println(str8)
// 아래 에러 발생
/*
Exception in thread "main" java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.lang.String (java.lang.Integer and java.lang.String are in module java.base of loader 'bootstrap')
at FileKt.main (File.kt:40)
at FileKt.main (File.kt:-1)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (:-2)
*/
var str9 : String? = "abc" as? String
println(str9)
}
결과
============================
abc
This is string
This is String
abc
abc
- 지연 초기화 (lateinit/lazy)
fun main() {
// 변경 가능
lateinit var lateString : String
//println(lateString)
/* 실행시 아래 에러 출력됨
Exception in thread "main" kotlin.UninitializedPropertyAccessException: lateinit property lateString has not been initialized
at FileKt.main (File.kt:3)
at FileKt.main (File.kt:-1)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (:-2)
*/
// 만약 서버에서 데이터를 받아오는 일이 필요할 때
// 서버에서 받아온 데이터를 넣어두고 싶은데
// 미리 변수를 선언해놓고 나중에 서버에서 값을 받아와서 넣어줄 때 주로 사용
lateString = "변경된 스트링"
println(lateString)
// lazy
// 값을 사용할 때만 들어가주도록
// 변경 불가
val lazyString : String by lazy {
println("이 친구가 만들어질 때 프린트")
"lazyTestString"
}
println(lazyString)
}
결과
=====================
변경된 스트링
이 친구가 만들어질 때 프린트
lazyTestString
'Kotlin' 카테고리의 다른 글
Kotlin 공부 - 예제, 연습-#2- 문자열의 숫자 및 홀수 짝수 구분 (0) | 2022.04.15 |
---|---|
Kotlin 공부 - 예제, 연습-#1-이메일 갯수 구하기 (0) | 2022.04.15 |
Kotlin 공부 - 조건문 if, when (0) | 2022.04.13 |
Kotlin 공부 - 반복문 for, while (0) | 2022.04.13 |
Kotlin 공부 - Nullable, Null safety, 엘비스 연산자 (0) | 2022.04.13 |