iT邦幫忙

2023 iThome 鐵人賽

DAY 8
0

接續昨天的數字型別。

字面常數

  • 10 進制的整數寫法:123
  • 如果要表示為 Long 型別,可以在尾部加大寫 L:123L
  • 16 進制的寫法:0x0F
  • 2 進制的寫法:0b00001011
  • Kotlin 不支援 8 進制的寫法
  • Kotlin 的小數預設使用雙精確度浮點數 Double:123.5, 123.5e10
  • 要強制使用單精確度浮點數 Float,可以在數字尾部加上大寫 F 或小寫 f:123.5F 或 123.5f
  • 可以使用底線 _ 表示法讓數字更易閱讀:1_000_000 表示 100 萬

轉換型別

型別轉換是將一種資料型別轉換為另一種資料型別的過程。有很多種不同的型別轉換方式,包括自動轉換和顯式轉換(強制轉換)。

  1. 自動轉換(Automatic Conversion):

自動轉換是指當 Kotlin 認為轉換是安全的且不會丟失數據時,它會自動執行的轉換。例如,可以將 Int 賦值給 Long,因為 Long 的範圍比 Int 大,不會造成數據丟失。

val intNumber: Int = 42
val longNumber: Long = intNumber.toLong() // 自動轉換

在這個例子之中,toLong() 函數執行了自動轉換。

  1. 顯式轉換(Explicit Conversion):

顯式轉換是指您明確指定要將一種資料型別轉換為另一種的操作。這種轉換可能會導致數據丟失或不安全,因此您需要明確指定轉換操作。

val doubleNumber: Double = 3.14
val intNumber: Int = doubleNumber.toInt() // 顯式轉換

在這個例子之中,toInt() 函數執行了顯式轉換,將 Double 轉換為 Int。如果 doubleNumber 是一個帶有小數部分的數字,則小數部分將被截斷。

  1. 安全轉換(Safe Cast):

安全轉換是使用 as? 運算符來嘗試將一種型別轉換為另一種型別,如果轉換不成功,則返回 null 而不是引發異常。

val anyValue: Any = "Hello"
val stringValue: String? = anyValue as? String // 安全轉換

在這個例子之中,我們嘗試將 anyValue 轉換為 String,如果 anyValue 不是 String 型別,則 stringValue 將為 null。

  1. 強制轉換(Unsafe Cast):

強制轉換是使用 as 運算符來將一種型別轉換為另一種型別,如果轉換不成功,則會引發 ClassCastException 異常。

val anyValue: Any = "Hello"
val stringValue: String = anyValue as String // 強制轉換

在這個例子中,如果 anyValue 不是 String 型別,則會引發異常。

安全轉換(as?)通常在您不確定型別是否能成功轉換時更為實用,因為它不會引發異常。

強制轉換(as)應該僅在您確定轉換會成功且安全時使用。

接下來,就是明天把資料型別結束。


上一篇
Day 7 資料型別(2)
下一篇
Day 9 資料型別(3)
系列文
我與Kotlin的愛恨情仇30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言