Java 類型轉換細節

  • 2019 年 12 月 26 日
  • 筆記

這裡介紹的是在 Java 中不同數據類型之間轉化的一些比較基本的,但是又不容易確定的問題。

這裡以 byte 類型為主,很多方法其實通用於 int long 這種類型。

一些非常簡單,沒有迷惑性的東西,這裡就跳過了,這篇主要講的是在轉化中比較容易迷惑的問題。

String 類型轉 Byte 類型

我們都知道 String 類型的轉換其他任意的基本數據類型,基本都有一個 XXX.valueOf()方法。通過這個方法就可以把 String 類型轉化為 XXX 類型了。以 Byte 類型為例。

使用這個方法要注意:

  • String 類型要符合數據類型
  • String 的數不能超過 byte 類型的取值範圍(-128 -127)超過這個範圍就會拋出異常了。
  • Byte.valueOf(String string,int radix) 這個方法,這個方法的意思是,string 被當做是 radix 進位的數。比如 Byte.valueOf("10",16) 結果是 16
  • Byte.decode(String nm) 方法,這個方法是自動識別 nm 的進位的。nm 是 ox 、oX、# 開頭就認為是 16 進位的數。 0 開頭就認為是 8 進位的數值

長類型轉短類型(保留低位元組)

以 int 轉 short 為例子:我們知道 int 是 4 個位元組,shor 是 2 個位元組。

我們又知道這些數值在電腦中都是以二進位來儲存的。

假如 int a = 65535 那麼在電腦中的存儲方式就是:0000FFFF(這裡方便起見用 16 進位表示)

short s = (shor)a 這樣強制轉換,Java 會把 a 的高 2 個位元組刪除,保留低 2 個位元組給 s 於是 s 在電腦中就變成了 FF ,就是 -1 了。