《Java和Android开发学习指南(第2版)》——第2章,第2.7节基本类型转换

2.7 基本类型转换
在处理不同的数据类型的时候,我们常常需要进行转换。例如,将一个变量的值赋给另一个变量,就涉及转换。如果两个变量具有相同的类型,赋值总是会成功。从一种类型到相同类型的转换,叫作等同转换(identity conversion)。例如,如下的转换保证能够成功:

int a = 90;
int b = a;

然而,向不同的类型转换则无法保证成功,甚至不一定能够那么做。基本类型转换还有另外两种形式,即加宽转换(widening conversion)和收窄转换(narrowing conversion)。

2.7.1 加宽转换
当从一种基本类型向另一种基本类型转换的时候,如果后者的大小和前者相同或者更大,就会发生加宽转换;例如,从int(32位)到long(64位)的转换。在如下情况中,进行加宽转换:

从byte向short、int、long、float或double转换。
从short向int、long、float或double转换。
从char向int、long、float或double转换。
从int向long、float或double转换。
从float向double转换。
从一种整数类型向另一种整数类型的加宽转换,不会有信息丢失的风险。同样的,从float向double的转换也会保留所有的信息。然而,从int或long向float的转换,可能会导致精度丢失。

加宽的基本类型转换是隐式地发生的,不需要在代码中做任何事情。例如:

int a = 10;
long b = a; // widening conversion

2.7.2 收窄转换
收窄转换发生在从一种类型到另一种拥有较小的大小的类型的转换中,例如,从long(64位)到int(32位)的转换。通常,收窄转换在如下的情况中发生:

从short向byte或char。
从char向byte或short。
从long向byte、short或char。
从float向byte、short、char、int或long。
从double向byte、short、char、int、long或float。
和加宽基本类型转换不同,收窄基本类型转换必须是显式的。需要在圆括号中指定目标类型。例如,如下是从long向int的收窄转换。

long a = 10;
int b = (int) a; // narrowing conversion

第2行中的(int)告诉编译器,应该发生收窄转换。如果被转换的值比目标类型的容量还要大的话,收窄转换可能导致信息丢失。前面的例子并不会导致信息丢失,因为10对一个int类型来说足够小。然而,在如下的转换中,由于9876543210L对一个int类型来说太大了,会导致一些信息丢失。

long a = 9876543210L;
int b = (int) a; // the value of b is now 1286608618

有可能导致信息丢失的收窄转换,在你的程序中将会引入一个缺陷。

时间: 2024-10-24 04:49:23

《Java和Android开发学习指南(第2版)》——第2章,第2.7节基本类型转换的相关文章

《Java和Android开发学习指南(第2版)》——第2章,第2.1节ASCII和Unicode

第2章 语言基础Java和Android开发学习指南(第2版)Java是一种面向对象编程语言,因此,理解OOP非常重要.第4章是本书的第一个关于OOP内容的一章.然而,在了解OOP功能和技术之前,应该先学习Java语言的基础知识. 2.1 ASCII和Unicode传统上,英语国家的计算机只使用美国信息交换标准代码(American Standard Code for Information Interchange,ASCII)字符来表示字母和数字字符.ASCII中的每个字符都用7位来表示.因此

《Java和Android开发学习指南(第2版)》—— 导读

前言 Java和Android开发学习指南(第2版)欢迎阅读本书. 本书是针对那些想要学习Java语言,特别是想要进行Android应用程序开发的人编写的.本书包含两个部分,第1部分主要介绍Java,第2部分介绍如何有效地构建Android应用程序. 本书中关于Java的内容并非每一项Java技术都讲到(在一本书里,无论如何也不可能涵盖所有的内容,这也是为什么大多数Java图书都专注于一项技术).但是,本书介绍了最重要的Java编程主题,这些主题是你自学其他技术所必须掌握的.特别是第1部分介绍了

《Java和Android开发学习指南(第2版)》—— 第1章 Java基础 1.1 下载和安装Java

第1章 Java基础 要使用Java编程,需要Java SE开发工具包(Java SE Development Kit,JDK).因此,本章的第1节将介绍如何下载和安装JDK.开发Java程序,涉及编写代码,将其编译为字节码,以及运行字节码.在Java程序员的职业生涯中,这是一个一次又一次重复的过程,并且,它对于你适应这个职业至关重要.因此,本章的主要目标是让你体验用Java进行软件开发的过程. 编写的代码不仅要能够工作,还要容易阅读又便于维护,这一点很重要,因此本章将向你介绍Java编码惯例.

《Java和Android开发学习指南(第2版)》——导读

目 录前 言 第1章 Java基础1.1节下载和安装Java1.2节第一个Java程序1.3节Java编码惯例1.4节集成开发环境1.5节本章小结 第2章 语言基础2.1节ASCII和Unicode2.2节分隔符2.3节基本类型2.4节变量2.5节常量2.6节字面值2.7节基本类型转换2.8节操作符2.9节注释2.10节本章小结 第3章 语句 第4章 对象和类 第5章 核心类 第6章 数组 第7章 继承 第8章 错误处理 第9章 操作数字 第10章 接口和抽象类 第11章 多态 第12章 枚举

《Java和Android开发学习指南(第2版)》—— 1.5 本章小结

1.5 本章小结 本章介绍了如何下载和安装JDK,并帮助你编写第一个Java程序.你会使用一个文本编辑器来编写程序,使用javac来将其编译为一个类文件,并且使用java工具来运行类文件. 随着程序变得更加复杂,且项目变得更大,IDE将会帮助你加快应用程序的开发. 本文仅用于学习和交流目的,不代表异步社区观点.非商业转载请注明作译者.出处,并保留本文的原始链接.

《Java和Android开发学习指南(第2版)》—— 1.2 第一个Java程序

1.2 第一个Java程序 本小节将强调Java开发中的步骤,即编写程序,将其编译为字节码以及运行字节码. 1.2.1 编写Java程序 可以使用任何文本编辑器来编写Java程序.打开一个文本编辑器,并且输入代码清单1.1中的代码.或者,如果你已经下载了本书配套的程序示例,只要将它复制到你的文本编辑器中就可以了. 如果你还没有下载代码,现在就可以从异步社区的Web站点下载示例.在前言的最后部分中,给出了下载地址.代码清单1.1 一个简单的Java程序 class MyFirstProgram {

《Java和Android开发学习指南(第2版)》—— 2.4 变量

2.4 变量 变量是数据占位符.Java是一种强类型的语言,因此,每个变量必须有一个声明的类型.Java中有两种数据类型: 引用类型一个引用类型的变量,提供对一个对象的引用.基本类型一个基本类型的变量,保存一个基本类型. Java如何存储整数值 你一定听说过计算机使用二进制数字,即只包含0和1的数字.本节对此提供了一个概要,当你学习操作符的时候可能用的上. 一个字节占8个位,这表示要分配8个位来存储一个字节.最左边的位是一个符号位.0表示正值,1表示负值.0000 0000是0的字节表示,000

《Java和Android开发学习指南(第2版)》——第2章,第2.4节变量

2.4 变量变量是数据占位符.Java是一种强类型的语言,因此,每个变量必须有一个声明的类型.Java中有两种数据类型: 引用类型一个引用类型的变量,提供对一个对象的引用.基本类型一个基本类型的变量,保存一个基本类型. Java如何存储整数值你一定听说过计算机使用二进制数字,即只包含0和1的数字.本节对此提供了一个概要,当你学习操作符的时候可能用的上. 一个字节占8个位,这表示要分配8个位来存储一个字节.最左边的位是一个符号位.0表示正值,1表示负值.0000 0000是0的字节表示,0000

《Java和Android开发学习指南(第2版)》——第1章,第1.4节集成开发环境

1.4 集成开发环境你可以使用一个文本编辑器来编写Java程序.然而,使用集成开发环境(Integrated Development Environment,IDE)将会更有帮助.IDE不仅会检查代码的语法错误,还可以自动提示代码.调试和跟踪程序.此外,当你录入的时候,编译会自动进行,并且,运行一个Java程序也只需要单击一下按钮.最终,你将用更短的时间进行开发. 可用的Java IDE曾经有数十种之多,但是如今,只剩下3种常用的.好在,前两种完全是免费的: NetBeans(免费且开源).Ec

《Java和Android开发学习指南(第2版)》——第1章,第1.5节本章小结

1.5 本章小结本章介绍了如何下载和安装JDK,并帮助你编写第一个Java程序.你会使用一个文本编辑器来编写程序,使用javac来将其编译为一个类文件,并且使用java工具来运行类文件. 随着程序变得更加复杂,且项目变得更大,IDE将会帮助你加快应用程序的开发.