类型转换面试题
1.short s = 1; s = s + 1;
2.short s = 1; s += 1;
分析
- 第一个行代码在编译时期就会报错,s属于short类型,当和1做加法是,由于 1是默认类型int,所以会自动提升数据类型,加法结果是一个int类型,然后赋值给一个short,所以会丢失精度。
- 第二行代码在编译器编译完成的结果如下:
在编译时期就将类型进行了强制转换,所以不会报错,但是依旧会存在精度丢失的问题。public static void main(String[] args) { short s = 1; s = (short)(s + 1); System.out.println(s); }
网友评论