java short i=1;i += 1;System.out.println(i);与i = i+1的区别

short i;i += 1;System.out.println(i);与i = i+1的区别

i = i+1;运行结果如下:


而i+=1;运行结果如下:

2

解析:对于short i =1;i = i+1;由于1是int类型,因此i+1运算结果也是int类型,需要强制转换类型才能赋值给short类型;

而short i = 1;i+=1;可以正确编译,因为i+=1;相当于i=(short)(i+1);其中有隐含的强制类型转换。


1.x=x+1,x+=1及x++的效率哪个最高?为什么? 
x=x+1最低,因为它的执行如下。 
(1)读取右x的地址; 
(2)x+1; 
(3)读取左x的地址; 
(4)将右值传给左边的x(编译器并不认为左右x的地址相同)。 
x+=1其次,它的执行如下。 
(1)读取x的地址; 
(2)x+1; 
(3)将得到的值传给x(因为x的地址已经读出)。 
x++最高,它的执行如下。 
(1)读取右x的地址; 
(2)x自增1.

2.x=x+1,和 x+=1; 在什么情况下不成立 而且 x=x+1 是错误的; (类型隐式转换) 
short x=1; 
x+=1; 
x=x+1; //因为 x是 short 类型 .当它+1 会自动转变成int 当是等于又 是 short 类型..所以会报错;

3.x=x+1,和 x+=1; 在什么情况下不成立 而且 x+=1 是错误的; 
Object x=”abc”; 
String y=”def”; 
x+=y; 
x=x+y

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值