天天看点

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