1. 數值類型之間的轉換
圖中的 6 個實線箭頭,表示無資訊丢失的轉換。3 個虛線箭頭表示可能有精度損失的轉換。
- byte --> short, 無資訊丢失的轉換
- short --> int, 無資訊丢失的轉換
- char --> int, 無資訊丢失的轉換
- int --> long, 無資訊丢失的轉換
- int --> double, 無資訊丢失的轉換
- float --> double, 無資訊丢失的轉換
- int --> float, 可能有精度丢失
- long --> float, 可能有精度丢失
- long --> double, 可能有精度丢失
例如,123 456 789 是一個大整數,它所包含的位數比 float 類型所能夠表示的位數多。當這個整數轉換為 float 類型時,将會得到正确的大小,但會損失一些精度。
int n = 123456789;
float f = n;
System.out.println(f); // 列印 1.23456792E8
兩個數值進行二進制操作時,先要将兩個操作數轉換為同一個類型,然後再進行計算。
- 如果兩個操作數中有一個是 double 類型,另一個操作數就會轉換為 double 類型。
- 否則,如果其中一個操作數是 float 類型,另一個操作數轉換為 float 類型。
- 否則,如果其中一個操作數是 long 類型,另一個操作數将會轉換為 long 類型。
- 否則,兩個操作數轉換為 int 類型。
2. 強制類型轉換
double x = 9.97;
int nx = (int) x; // nx 的值為 9