自动类型转换
-
自动类型转换: 容量小的类型自动转换成为容量大的数据类型。(注意: 是容量小的转换为容量大的,而不是所占空间小的转换为占空间大的)
如:long与float做运算时,long要转换为float,虽然long占8个
字节,而float占4个字节,但float的数据容量比long大。
数据类型按容量大小排序为:
![](https://i-blog.csdnimg.cn/blog_migrate/9c071e33aeafe6a79cb90261069ff784.png)
有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算。
-
byte,short,char 之间不会互相转换,他们三者在计算时首先转换为 int 类型。 (包括同种类型的计算,比如byte a1 = 1;byte a2 = 2;则a1+a2属于int类型 )
-
boolean类型不能与其他数据类型运算。
-
当把任何基本数据类型的值和字符串(String)进行连接运算时(+),基本数据类型的值将自动转化为字符串(String)类型。
对于常量和变量之间的数据类型自动转换:
对于常量来说:
-
整数,比如1,2等等,其默认的数据类型为 int。
-
浮点数,比如1.23,12.3等等,其默认的数据类型 为 double。
所以当用变量和常量进行计算时,要把数据类型设置为更高类型:
例:float a1 = 12.3f;
float a2 = a1+2.3;(这句话是错误的,因为2.3默认是double类型,而float的类型比double低,所以报错)
强制类型转换
强制类型转换:
自动类型提升的逆运算,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符:(),但可能会造成
精度降低或溢出。
例:double a1 = 12.3;
float a2 = (float)a1;则此时就可以将a1的值赋给a2,并且没有精度的降低。
通常,字符串不能直接转换为基本类型,但通过基本类型对的包装类则可以实现字符串转换为基本类型。
如: String a = “43”; inti= Integer.parseInt(a);
boolean类型不可以转换为其他的数据类型。