专业的JAVA编程教程与资源

网站首页 > java教程 正文

java 核心技术-12版 卷Ⅰ- 3.5.4 强制类型转换

temp10 2024-11-21 21:13:20 java教程 13 ℃ 0 评论

原文

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

java 核心技术-12版 卷Ⅰ- 3.5.4 强制类型转换

double x = 9.997;

int nx = (int)x;

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

如果想舍入(round)一个浮点数来得到最接近的整数(大多数情况下,这种操作更有用),可以使用Math.round

double x = 9.997;

int nx = (int) Math.round(x);

现在,变量nx 的值为10。调用round时,仍然需要使用强制类型转换(int) 。原因是round 方法的返回值是long 类型,由于存在信息丢失的可能性,所以只有使用显式的强制类型转换才能将一个 long 值赋给 int 类型的变量。

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

C++注释:不要在boolean 类型与任何数值类型之间进行强制类型转换,这样可以防止发生一些常见的错误。只有极少数的情况下需要将一个boolean 值转换为一个数,此时可以使用条件表达式 b?1:0 。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表