Java是强类型语言,当把一种数据类型的值赋给另外一种数据类型的变量时,需要进行数据类型转换。根据转换方式的不同,数据类型转换可分为两种:自动类型转换和强制类型转换。转换规则是:Java按照取值范围,将取值范围小的数据类型的值赋给取值范围大的数据类型的变量时,系统自动完成数据类型的转换;反之,则必须进行强制类型转换。
1.自动类型转换
自动类型转换也叫隐式类型转换,指的是两种数据类型在转换的过程中不需要显式地进行声明。当把一个类型取值范围小的数值直接赋给另一个取值范围大的数据类型变量时,系统就会进行自动类型转换。对于基本数据类型,自动类型转换规则如图2-8所示。
图2-8 基本数据自动类型转换图
关于自动类型转换,需注意以下几点:
(1)byte、short、char类型相互之间不参与转换,它们参与运算时首先会自动转换为int类型。例如:
(2)取值范围小的类型的数据可以默认转换为取值范围大的数据类型。例如:
(3)同一优先级表达式中有多种类型的数据混合运算时,编译系统首先将所有数据自动转换成取值范围最大的那一种数据类型,然后再进行计算。例如:
2.强制类型转换
强制类型转换也叫显式类型转换,指的是两种数据类型之间的转换需要进行显式地声明。当两种类型彼此不兼容,或者目标类型取值范围小于源类型时,自动类型转换无法进行,这时就需要进行强制类型转换,其语法格式为:(www.xing528.com)
例如:
注意:
本例中,将一个int类型的数转换为byte类型,前3个高字节的数据就会丢失,这样数值就可能发生变化。因此,强制类型转换要慎用,除非知道它不会造成数据丢失。
【例2-3】
字符类型和整数类型的转换。要求:给定一个整数值97,打印其对应的字符;给定字符0,打印其对应的整型值。
程序TypeCastingDemo.java,如图2-9所示。
图2-9 字符类型和整数类型的转换
注意:
int类型转换为char类型,需要用到强制类型转换;而char类型转换为int类型,系统完成自动类型转换。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。