《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

相关文章
|
2月前
|
负载均衡 NoSQL 算法
一天五道Java面试题----第十天(简述Redis事务实现--------->负载均衡算法、类型)
这篇文章是关于Java面试中Redis相关问题的笔记,包括Redis事务实现、集群方案、主从复制原理、CAP和BASE理论以及负载均衡算法和类型。
一天五道Java面试题----第十天(简述Redis事务实现--------->负载均衡算法、类型)
|
15天前
|
存储 Java Windows
java基础(9)数据类型中的char类型以及涉及到的转义字符
Java中的char类型可以存储一个中文字符,因为它占用两个字节。转义字符允许在代码中使用特殊字符,例如`\n`表示换行,`\t`表示制表符,`\\`表示反斜杠,`\'`表示单引号,`\"`表示双引号。可以使用`\u`后跟Unicode编码来表示特定的字符。
30 2
java基础(9)数据类型中的char类型以及涉及到的转义字符
|
8天前
|
存储 安全 Java
Java 数据结构类型总结
在 Java 中,常用的数据结构包括基础数据结构(如数组和字符串)、集合框架(如 Set、List 和 Map 接口的多种实现)、特殊数据结构(如栈、队列和双端队列)、链表(单链表、双链表和循环链表)以及图和树等。这些数据结构各有特点和适用场景,选择时需考虑性能、内存和操作需求。集合框架提供了丰富的接口和类,便于处理对象集合。
|
15天前
|
Java
java基础(10)数据类型中的整数类型
Java中的整数类型包括byte、short、int和long。整数字面值默认为int类型,加L表示long类型。整数字面值可以是十进制、八进制(0开头)或十六进制(0x开头)。小容量类型(如int)可自动转换为大容量类型(如long),但大容量转小容量需强制转换,可能导致精度损失。
27 2
|
27天前
|
Java
Java强制类型转换需要注意的点
在 Java 中,强制类型转换(显式类型转换)用于将一种数据类型转换为另一种。然而,这一过程需谨慎处理以避免以下问题:数据丢失,尤其是在从大范围类型转换到小范围类型时;类型不兼容,如 `String` 无法直接转换为 `int`;对象类型转换时应确认实际类型与目标类型兼容,可借助 `instanceof` 运算符;处理基本类型与包装类之间的自动装箱和拆箱时需注意 `null` 值;浮点数转整数时会截断小数部分;字符转整数则得到 Unicode 值。充分理解这些注意事项有助于避免运行时错误和数据不一致。
|
18天前
|
监控 算法 Java
深入理解Java中的垃圾回收机制在Java编程中,垃圾回收(Garbage Collection, GC)是一个核心概念,它自动管理内存,帮助开发者避免内存泄漏和溢出问题。本文将探讨Java中的垃圾回收机制,包括其基本原理、不同类型的垃圾收集器以及如何调优垃圾回收性能。通过深入浅出的方式,让读者对Java的垃圾回收有一个全面的认识。
本文详细介绍了Java中的垃圾回收机制,从基本原理到不同类型垃圾收集器的工作原理,再到实际调优策略。通过通俗易懂的语言和条理清晰的解释,帮助读者更好地理解和应用Java的垃圾回收技术,从而编写出更高效、稳定的Java应用程序。
|
2月前
|
Java
【Java基础面试五】、 int类型的数据范围是多少?
这篇文章回答了Java中`int`类型数据的范围是-2^31到2^31-1,并提供了其他基本数据类型的内存占用和数值范围信息。
【Java基础面试五】、 int类型的数据范围是多少?
|
2月前
|
存储 Java 程序员
Java中对象几种类型的内存分配(JVM对象储存机制)
Java中对象几种类型的内存分配(JVM对象储存机制)
66 5
Java中对象几种类型的内存分配(JVM对象储存机制)
|
1月前
|
自然语言处理 算法 Java
Java如何判断两句话的相似度类型MySQL的match
【9月更文挑战第1天】Java如何判断两句话的相似度类型MySQL的match
21 2
|
2月前
|
Java 应用服务中间件 HSF
Java应用结构规范问题之dal层中的mapper数据源类型进行组织的问题如何解决
Java应用结构规范问题之dal层中的mapper数据源类型进行组织的问题如何解决