《Java 7程序设计入门经典》一2.13 使用强制类型转换

简介: 本节书摘来自华章出版社《Java 7程序设计入门经典》一书中的第2章,第2.13节,作者(美)Herbert Schildt Dale Skrien,更多章节内容可以访问云栖社区“华章计算机”公众号查看

2.13 使用强制类型转换

尽管自动类型转换很有用,但是由于它们只能用于兼容类型间扩大范围的转换,它们也不能满足所有的编程需要。对于其他情况,只能运用强制类型转换。强制类型转换(cast)是告诉编译器将一种类型转换为另一种类型。所以,它需要显式类型转换。强制类型转换具有以下一般形式:

(target-type) expression

这里,target-type指定特定表达式转化到何种目标类型。例如,如果想把表达式x/y的类型转换为int类型,可以写成:
image

这里,尽管变量x和y都是double类型的,但是强制类型转换的结果是int类型。x/y两侧的圆括号是必需的。否则,向int类型的强制类型转换只针对变量x而不针对除法的结果。由于从double类型到int类型没有自动类型转换,因此强制类型转换是必需的。
当强制类型转换是缩小范围的转换(narrowing conversion),信息可能会丢失。例如,当从long类型转换为short类型时,如果long类型的值比short类型的范围大,高位就会截去,信息丢失。当把浮点值转换为整数值时,小数部分也会由于截断而丢失。例如,如果将值1.23赋给整数,结果就仅仅是1。小数部分0.23就丢失了。
下面的程序演示需要强制类型转换的类型转换:
image
image

程序输出如下所示:
image

在程序中,将(x/y)强制转换为int类型使小数部分发生截断,信息丢失。接下来,当把值100赋予变量时,由于byte类型可以存储值100,因此没有信息损失。但是,当试图把值257赋予变量b时,由于257超过了byte的最大值,因此信息丢失。最后,当将byte值赋给char类型时,没有信息丢失,但需要强制类型转换。
image

相关文章
|
23天前
|
Java
【Java】如果一个集合中类型是String如何使用拉姆达表达式 进行Bigdecimal类型计算?
【Java】如果一个集合中类型是String如何使用拉姆达表达式 进行Bigdecimal类型计算?
25 0
|
28天前
|
Java
java中的泛型类型擦除
java中的泛型类型擦除
13 2
|
1月前
|
Java
JAVA结构化程序设计
JAVA结构化程序设计
14 0
|
1月前
|
存储 Java
JAVA字符串与其他类型数据的转换
JAVA字符串与其他类型数据的转换
27 4
|
1月前
|
Java 物联网 测试技术
Java面向对象程序设计3面向对象基础
Java面向对象程序设计3面向对象基础
168 0
|
6天前
|
Java
Java 16 新玩法:instanceof 升级版,让类型检查更精准
Java 16 新玩法:instanceof 升级版,让类型检查更精准
11 0
|
6天前
|
存储 监控 安全
泛型魔法:解码Java中的类型参数
泛型魔法:解码Java中的类型参数
26 0
泛型魔法:解码Java中的类型参数
|
29天前
|
设计模式 Java 数据安全/隐私保护
Java面向对象程序设计
Java面向对象程序设计
7 0
|
29天前
|
存储 安全 Java
Java变量类型
Java变量类型
7 0
|
1月前
|
存储 监控 安全
Java基于物联网技术的智慧工地云管理平台源码 依托丰富的设备接口标准库,快速接入工地现场各类型设备
围绕施工安全、质量管理主线,通过物联感知设备全周期、全覆盖实时监测,将管理动作前置,实现从事后被动补救到事前主动预防的转变。例如塔吊运行监测,超重预警,升降机、高支模等机械设备危险监控等,通过安全关键指标设定,全面掌握现场安全情况,防患于未然。
147 5