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 [kiso.vn]

// 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.

  1. toChar() – convert thành kiểu Char
  2. toInt() – convert thành kiểu Int
  3. toLong() – convert thành kiểu Long
  4. toFloat() – convert thành kiểu Float
  5. toDouble() – convert thành kiểu Double
  6. toByte() – convert thành kiểu Byte
  7. toShort() – convert thành kiểu Short

2. Ví dụ Type Casting đơn giản

package kiso

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:

1 kotlin type casting jpg

Đ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

Bài viết liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *