自动类型转换(隐式类型转换):分两种情况:
1,不同类型的数据进行运算时,系统会自动将运算优先级别低的转换成级别高的,结果和运算级别高的数据类型一样。
2,赋值运算符两边类型不一样时,系统会自动将右侧表达式的类型转换成左侧的变量类型,然后再赋值
即:
见下图。在这个图中,黑色的实线表示在进行转换的时候,不会损失信息,而红色的虚线表示在转换时可能会引起信息的损失。
强制类型转换(显示类型转换):从高精度转成低精度
例:解释:
short s=1;
s+=2;与s=s+2的区别.
第二个是类型转换错误,需要强制类型转换
short s=1: S+=2;
(暂时的理解)+=会进行内部处理, “+=”左边的数据类型会自动转换为右边的数据类型.
Short s=1; s=s+2;
因为s是short类型,2是int类型
Short---->int类型(自动)
s+2=1+2=3(int类型)
Int类型再赋值给short时 会出现数据类型转换错误,
解决方法是进行强制数据类型转换
S=(short)(s+2);
注意:
1.布尔型与其它基本类型之间不能转换
2.转换的时候,以占用内存较大的类型为主
3.整数的默认类型是int类型,小数的默认类型是double类型
4.运算的两端必须一致,也就是运算前先转换成相同的数值类型,否则会出现损失精度
5.通常,字符串不能直接转换为基本类型,但通过基本类型对应的包装类则可以实现把字符串转换成基本类型。如: String a = "39"; int i = Integer.parseInt(a);