首页 > 代码库 > Java随笔:混合类型表达式类型转换问题

Java随笔:混合类型表达式类型转换问题

混合表达式处理“坑”很多,看看下面这段代码:

short x = 0;int y = 123456;x += y;System.out.println(x);

 按照正常的理解 x+=y 等价于 x = x+y

这里将int型的 y 强转为short型 x,会报告错误:

错误: 不兼容的类型: 从int转换到short可能会有损失

但是,上面的代码居然没有报错。

这里就是混合类型表达式默认进行了一次类型转换,将结果转换为左侧变量的类型,即x类型的short。

由于123456越界了,所以结果就是-7616。

总结

隐藏的类型转换很有可能编译不报错,但实际结果却对数值进行了截断。

当+=左右两边类型不相等时,一定要注意。

 

Java随笔:混合类型表达式类型转换问题