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所示:
图1 自动类型转换示例
二、强制类型转换
1.基本数据类型的强制转换
强制数据类型转换时由高位数向低位数转换会造成数据丢失问题,在做强制数据类型转换时应该注意这点。强制类型转换的格式为: (转换后的数据类型)变量或值。如下图所示:
图2基本数据类型强制转换
2.引用数据类型的强制转换
引用数据类型的向上转型不需要强制转换,如果子类重写了父类的方法,那么父类引用将调用子类的方法,向上转型可以减少重复代码,使用父类作为函数参数,实际调用的时候传递子类对象,这样使得代码变得更加简洁。举例如下图所示:
图3 父类Parent类定义
图4 子类Boy类定义
图5 向上转型后调用子类重写后的方法
图6调用子类重写后的f1方法
自定义引用数据类型的向下转型需要进行强制类型转换,如下图所示:
图7向下转型示例
图8向下转型运行结果
感谢阅读,动一动您的手指,分享给身边的朋友吧!谢谢!
长按识别二维码关注本文公众号