面试题:short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

package test;

/**
 * 测试
 * @author 郭胜
 *
 */
public class Test {

	public static void main(String[] args){
		
		short aa = 1;
		aa += 1;//这种写法是正确的
		System.out.println(aa);
		System.out.println(aa + 1);
		short bb = 1;
		bb = aa + 1;//这种写法报错;要求强制类型转换
	}
}

这两个表达式都被称为赋值表达式。 (x = x + i) 表达式使用的是简单赋值操作符(=),而 (x += i) 表达式使用的是复合赋值操作符。Java语言规范中讲到, 复合赋值(E1 op=E2)等价于简单赋值(E1=(T)((E1) op (E2))) ,其中T是E1的类型,除非E1只被计算一次。   换句话说,复合赋值表达式自动地将所执行计算的结果转型为其左侧变量的类型。如果结果的类型与该变量的类型相同,那么这个转型不会造成任何影响。然而,如果结果的类型比该变量的类型要宽,那么复合赋值操作符将悄悄地执行一个窄化原生类型转换。  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值