개인 공부 후 자료를 남기기 위한 목적임으로 내용 상에 큰 문제가 있을 수도 있습니다.
잘못된 내용이 있다면 언제든지 편하게 댓글 남겨주시면 감사하겠습니다.
Casting Object 이해하기
Type Conversion은 2가지 형태로 나눈다
- Implicit Conversion
- 암시적으로 컴파일러가 자동으로 데이터 유형을 변환한다.
- Explicit Conversion
- 변환 할 데이터 유형을 명시적으로 지정한다는 것을 의미한다.
- 예) String.valueOf, Integer.parseInt… 등..
자료형 변환
- Data Type Bigger(Safe Cast)
- Byte > Short > Int > Long > Float > Double
- 예) Int에서 Double로 변환
- Data Type Smaller(Unsafe Cast)
- Double > Float > Long > Int > Short > Byte
- 데이터가 큰 저장 영역에서 작은 데이터 영역으로 이동할 때 데이터가 손실이 되기 때문에 안전하지 않다
Kotlin Casting Object 이해하기
Implicit Conversion을 지원하지 않는다.
- Kotlin은 컴파일러가 의도를 추측하는 것을 극도로 싫어한다.
- 숫자 형식 변환을 포함해서 언어의 모든 내용을 명시적으로 표현해야 한다.
Explicit Conversion Method(명시적 변환 메소드)
- toByte(): Byte
- toShort(): Short
- toInt(): Int
- toLong(): Long
- toFloat(): Float
- toDouble(): Double
- toChar(): Char
String > Int로 변환
1
2
3
4
5
6
7
8
9 fun main(args: Array<String>) {
var a = "20"
var b = "30"
var result = a.toInt() + b.toInt()
print("${result}")
}
// result = 50
변수에 data type을 return
1
2
3
4
5
6 fun main(args: Array<String>) {
var a = 1000
print("a data type? ${a.javaClass.kotlin.qualifiedName}")
}
// a data type? kotlin.Int
Safe cast
1
2
3
4
5
6
7 fun main(args: Array<String>) {
var a = 100
var b: Long = a.toLong()
print("b data type? ${b.javaClass.kotlin.qualifiedName}")
}
// b data type? kotlin.Long
- 데이터 손실이 없다.
Unsafe cast
1
2
3
4
5
6
7
8
9 fun main(args: Array<String>) {
var a: Float = 100.2f
var b: Int = a.toInt()
print("b data type? ${b.javaClass.kotlin.qualifiedName}")
print("b: ${b}")
}
// b data type? kotlin.Int
// b: 100
- 0.2에 데이터 손실이 생겼다(아까워라 T_T).