天天看點

Java 數值類型轉換(學習 Java 程式設計語言 010)

1. 數值類型之間的轉換

Java 數值類型轉換(學習 Java 程式設計語言 010)

圖中的 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