《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

相关文章
|
28天前
|
Java
【Java】如果一个集合中类型是String如何使用拉姆达表达式 进行Bigdecimal类型计算?
【Java】如果一个集合中类型是String如何使用拉姆达表达式 进行Bigdecimal类型计算?
25 0
|
1月前
|
Java
java中的泛型类型擦除
java中的泛型类型擦除
13 2
|
1月前
|
Java
JAVA结构化程序设计
JAVA结构化程序设计
16 0
|
1月前
|
存储 Java
JAVA字符串与其他类型数据的转换
JAVA字符串与其他类型数据的转换
27 4
|
1月前
|
Java 物联网 测试技术
Java面向对象程序设计3面向对象基础
Java面向对象程序设计3面向对象基础
168 0
|
5天前
|
存储 算法 安全
什么是Java泛型类型?
【4月更文挑战第13天】
12 0
什么是Java泛型类型?
|
11天前
|
Java
Java 16 新玩法:instanceof 升级版,让类型检查更精准
Java 16 新玩法:instanceof 升级版,让类型检查更精准
13 0
|
11天前
|
存储 监控 安全
泛型魔法:解码Java中的类型参数
泛型魔法:解码Java中的类型参数
33 0
泛型魔法:解码Java中的类型参数
|
1月前
|
设计模式 Java 数据安全/隐私保护
Java面向对象程序设计
Java面向对象程序设计
7 0
|
1月前
|
存储 安全 Java
Java变量类型
Java变量类型
8 0

热门文章

最新文章