Java 数值类型转换(学习 Java 编程语言 010)

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. 强制类型转换

在必要的时候,int 类型的值将会自动地转换为 double 类型。另一方面,有时也需要将 double 转换为 int。在 Java 中,允许进行这种数值之间的转换,当然,有可能会丢失一些信息。这种有可能损失信息的转换要通过强制类型转换(cast) 来完成。强制类型转换的语法格式是在圆括号中给出想要转换的目标类型,后面紧跟待转换的变量名。例如:

double x = 9.97;
int nx = (int) x; // nx 的值为 9

变量 nx 的值为 9,因为强制类型转换通过截断小数部分将浮点值转换为整形。

如果试图将一个数值从一种类型强制转换为另一种类型,而又超出了目标类型的表示范围,结果就会截断成一个完全不同的值。例如,(byte) 300 的实际值为 44。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值