Java面试填坑

错误集锦

例子1:byte b = 4;
过程:只要看到数字就认为是数值型int, 但是我们可以看出b为byte类型,这里编译器所做的事就是

  1. 先将4进行数值转换将int类型转换为byte类型
  2. 然后将byte(4)赋值给b
    同样这里b = 3+7,所作的动作也是一样的
    这里有个坑:
    当我们编码:
    byte b1 = 3;
    byte b2 = 4;
    b = b1+b2;
    编辑器再编译过程中因为b1和b2变量因为无法检查,不知道是否会 超出byte表示的范围(-127~128),因此会报可能损失精度的错误,而上边byte b = 4单独这一行代码不会报错,是因为4是一个常量可以检查。

例子2:
int a = 3,b;
b = a++;
short c;
c = a++;
c = a +1;
过程1:当程序检查到a++时,++在a后边,知道a还要进行其他的运算,此时内存会将a此时的数值进行拷贝预存下来,之后进行a运算a进行自增运算,然后将a预存的值赋值给b,过程很重要。
过程2:代码c= a+1,看起来过程好像与a++是一样的,不过内部运算确实不同,原因a++是一部运算(运算+赋值),然后根据c的数值类型进行相应的转换,而c = a +1确实两部运算,运算过程肯定没有毛病,不过在赋值过程中,编辑器就会认为当前a是变量无法确定分配的内存空间能够撑的下运算后的值,所以会报错。所以应该这样编写c = (short)(a+1);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值