Kotlin - Type Casting - chuyển đổi kiểu dữ liệu
Type Casting là quá trình chuyển đổi từ loại dữ liệu sang loại dữ liệu khác khác, ví dụ - chuyển đổi int thành Long, Long thành Double, v.v. Trong bài viết này, chúng ta sẽ tìm hiểu cách thực hiện chuyển đổi loại dữ liệu trong Kotlin.
1. Chuyển đổi trong Kotlin và Java
Trong java, một kiểu dữ liệu được tự động chuyển đổi sang kiểu dữ liệu khác khác (trong một số trường hợp). Trong Kotlin chúng ta cần chuyển đổi rõ ràng loại đó.
Ví dụ
Java: Int được tự động chuyển thành kiểu dữ liệu Long vì giới hạn lớn hơn int.
// This code is valid in Java, even though we are converting int to long // because long is larger than int and it can hold integers int num1 = 101; long num2 = num1;
Kotlin: Trong Kotlin, chuyển đổi không tự động, chúng ta cần thực hiện chuyển đổi loại một cách rõ ràng.
Bài viết này được đăng tại [free tuts .net]
// This code is invalid in Kotlin. This will cause compile time // error, type mismatch val num1: Int = 101 val num2: Long = num1
Mã chính xác trong Kotlin:
Chúng ta sử dụng hàm toLong () để chuyển đổi int thành Long trong Kotlin.
val num1: Int = 101 val num2: Long = num1.toLong()
Các Functions để chuyển đổi loại trong Kotlin
Trong ví dụ trên, chúng ta đã thấy cách sử dụng hàm toLong () để chuyển đổi một số nguyên thành loại Long. Tương tự, chúng ta có các chức năng khác có sẵn trong Kotlin để giúp chúng tôi chuyển đổi loại.
- toChar() – convert thành kiểu
Char
- toInt() – convert thành kiểu
Int
- toLong() – convert thành kiểu
Long
- toFloat() – convert thành kiểu
Float
- toDouble() – convert thành kiểu
Double
- toByte() – convert thành kiểu
Byte
- toShort() – convert thành kiểu
Short
2. Ví dụ Type Casting đơn giản
package freetuts fun main(args : Array<String>){ /** * Double to int type casting */ println("4.554 to int: " + (4.554.toInt())) /** * int to Char type casting */ println("66 to Char: " + (65.toChar())) /** * Char to int type casting */ println("B to int: " + ('B'.toInt())) }
OUTPUT:
Điều gì xảy ra khi chúng ta chuyển đổi một loại lớn hơn sang loại nhỏ hơn?
Khi chuyển đổi kiểu lớn hơn sang kiểu nhỏ hơn, chúng ta có hai kết quả có thể xảy ra. Nếu giá trị mà chúng ta đang chuyển đổi sang kiểu nhỏ hơn nằm ngoài phạm vi của loại mục tiêu, thì kết quả sẽ bị cắt ngắn. Tuy nhiên, khi giá trị nằm trong phạm vi của kiểu mục tiêu, nó được chuyển đổi mà không bị cắt ngắn.
Ví dụ 1: Khi giá trị nằm ngoài phạm vi của loại mục tiêu.
Trong ví dụ này, chúng ta đang chuyển đổi kiểu Long thành loại int trong đó giá trị của kiểu Long nằm ngoài phạm vi của kiểu số nguyên.
fun main(args : Array<String>) { val num1: Long = 5453448989999998988 val num2: Int = num1.toInt() println("Number num1 is: $num1") println("Number num2 is: $num2") }
OUTPUT:
Number num1 is: 5453448989999998988 Number num2 is: 2041161740
Ví dụ 2: Khi giá trị nằm trong phạm vi của kiểu mục tiêu
Trong ví dụ này, chúng ta đang chuyển đổi kiểu Long thành kiểu int trong đó giá trị của kiểu Long nằm trong phạm vi của loại số nguyên.
fun main(args : Array<String>) { val num1: Long = 5453448 val num2: Int = num1.toInt() println("Number num1 is: $num1") println("Number num2 is: $num2") }
OUTPUT
Number num1 is: 5453448 Number num2 is: 5453448