a. 自动类型转换
在byte、short、char参与运算的时候会自动提升为int,相当于将一个占空间较小的值放入了一个较大的空间。
b. 强制类型转换
可以将一个占空间较大的值使用(类型)的形式强制放入一个较小的空间,有可能损失精度。
c. 字符串转换
任何值和字符串相加都会得到字符串。
数据类型转换的时机:
a.赋值
在给byte,short进行赋值时,右边的值是一个常量或常量运算且在所对应的数据类型范围内,则进行自动的数据类型转换。
如:
byte i=1;或i=1+2; 正确
byte i=128;或i=126+2; 错误 超出了byte型表示的范围
byte i=i+1; 错误 "="右边有变量参与运算不能进行自动类型转换,只能强转。
b.二元运算
当两个操作数中存在变量,并且类型不相同时,低类型自动转换为高类型,最低转换为int(byte,short,char都会自动转
换为int型参与运算,当然如果有long类型参与运算,会再转换成long类型),然后进行计算,得到的结果是高类型,最低为int型。
如:byte i,j,t;
i=1;
j=2;
t=i+j; 右边的i和j会自动转换为int型,然后相加,最后的int型数,在赋值时必须强制转换回byte.
整型数据长变短,强制转换;短变长,自动转换
浮点数与整型进行转换时,浮点数表示的范围远大于整数表示的范围
整数转换成浮点数的时候,自动转换,格式将进行变化(出现小数点)
浮点数转换成整数时,无论怎么变,都 不可能对原始数据进行精确描述
此时,将浮点数的小数部分去掉,只保留整数部分,强制转换。 |