算术运算时的转换
首先,要明确一点:Java不支持不同类型之间的数据运算。
那么,如果在实际编程真正碰到不同类型的数据的运算,JVM该怎么处理呢?
首先,JVM会先转化为同种类型后再做运算,但是这种运算是有限制的下面列出类型转换的规则:
1.如果是 byte short int char 之间的任意的类型做数值运算,先转换为int 类型,然后再做运算。
2.如果是整数类型 和 long 类型之间的运算,除了long类型之外的类型需要转换为 long 类型,然后再做运算。
3.如果有float 和 整数进行运算,所有的整数类型转换为float类型。
4.如果有double类型,所有的类型都自动向double 转换。
Java支持自动向上类型转换:向范围更大的类型转换。 自动的转换。 因为是安全的。
运算的过程中,同样可以进行强制转换。
赋值时的转换
赋值时的类型转换:
1:自动向上类型转换
可以将一个小范围的类型的数据,赋值给一个大范围类型的变量。因为安全,所以可以直接赋值。
2:强制向下类型转换。
通常是将一个大类型的数据,赋值给一个小范围类型的变量。
强制转换的语法:
[小范围类型] 变量 = (小范围类型)[大范围类型的数据]
例子
byte b = (byte)156;short s = (short)1234567;
向下强转的规律:
如果是整数之间的强制转换 直接把多出的高位部分直接砍掉。
如果是浮点数强制转换为整数,那么直接去掉小数部分。
两个比较大的整数相加 结果还是int 会超出int的范围。溢出的部分直接砍掉。
两个比较大的整数相加 结果还是int 会超出int的范围。溢出的部分直接砍掉。
+=运算符与++运算符自动执行强转
+=和++强转
+=和++强转
类型转换图
Java类型转换图
作者:Tinner丶
链接:https://www.jianshu.com/p/90601d22ca37