Java数据类型转换分为两种:
1、自动类型提升;
2、强制类型转换;
先来说说第一种,自动类型提升。
发生条件:
两种不同的基本数据类型之间进行算术运算,一个操作数的数据类型会自行提升到与另操作数的数据类型;
比如:a + b;
a是double型,b是int型,那么上面的表达式结果是一个什么类型呢?
先来看看不同数据类型计算自动提升的规则:
进行转换的规则如下:
因为不同数据类型所占用的位数不同,所以在进行数据类型的转换时可能会有数据丢失,上图中实线表示无数据丢失,虚线为有数据丢失。
第二种、强制类型转换;
自动类型提升是一种数据类型自动变为另一种数据类型,强制类型转换则是人为的用进行数据类型改变。
强制类型转换的语法格式是:
type2 变量2 =(type1)变量1;
上面的小括号就是强制类型转换。
例如:
double a = 123.456;
int b = (int)a;
a的值为123,强制类型转换是把小数部分抹去,把整数部分赋值给目标变量。
注意:在进行数据类型强制转换的时候,如果目标数据类型无法容纳转换后的值那么就会出错。比如:(byte)300,结果绝对不是你想要的,所以要避免这种强制类型转换。
以上就是数据类型转换的知识点,截图和部分话语摘自来《Java核心技术卷I》。