java数据类型的转换在编程中是很常见,掌握java数据类型的转换规则对于编写正确的程序逻辑具有重要作用。java数据类型转换有两种:其一是自动类型转换,常见于位数低的类型向位数高的类型转换;其二是强制类型转换,强制类型转换必须在代码中明确声明。

一、自动类型转换

自动类型转换按从低到高的位数转换,由低到高的顺序为 byte,short,char)--> int- -> long- -> float --> double。也就是说在运算过程中,要先将不同的数据类型转换为同一种数据类型后再进行相应的运算。具体的转换规则如下表所示:

操作数1

操作数2

转换后的数据类型

byte、short、char

int

int

byte、short、char、int

long

long

byte、short、char、int、long

float

float

byte、short、char、int、long、float

double

double

表1数据类型转换规则

以上转换规则对应的文字描述为(从下到上顺序):

1.操作数中有一个是double类型,另一个操作数就转换为double类型,最终的运算结果是double类型。

2.否则,操作数中有一个是float类型,另一个操作数就转换为float类型,最终的运算结果是float类型。

3.否则,操作数中有一个是long类型,另一个操作数就转换为long类型,最终的运算结果是long类型。

4.否则,两个操作数都要转换为int类型,最终的运算结果是int类型。

对于规则1举例如下,其他数据类型类似,如下图1所示:

每日一练9:java数据类型转换

图1 自动类型转换示例

二、强制类型转换

1.基本数据类型的强制转换

强制数据类型转换时由高位数向低位数转换会造成数据丢失问题,在做强制数据类型转换时应该注意这点。强制类型转换的格式为: (转换后的数据类型)变量或值。如下图所示:

每日一练9:java数据类型转换

图2基本数据类型强制转换

2.引用数据类型的强制转换

引用数据类型的向上转型不需要强制转换,如果子类重写了父类的方法,那么父类引用将调用子类的方法,向上转型可以减少重复代码,使用父类作为函数参数,实际调用的时候传递子类对象,这样使得代码变得更加简洁。举例如下图所示:

每日一练9:java数据类型转换

图3 父类Parent类定义

每日一练9:java数据类型转换

图4 子类Boy类定义

每日一练9:java数据类型转换

图5 向上转型后调用子类重写后的方法

每日一练9:java数据类型转换

图6调用子类重写后的f1方法

自定义引用数据类型的向下转型需要进行强制类型转换,如下图所示:

每日一练9:java数据类型转换

图7向下转型示例

每日一练9:java数据类型转换

图8向下转型运行结果

感谢阅读,动一动您的手指,分享给身边的朋友吧!谢谢!

每日一练9:java数据类型转换

长按识别二维码关注本文公众号

相关文章: