Byte b=10;
b=b+1;//编译不通过
b+=1;//编译通过
b=b+1;这个报错是因为他进行两个判断,第一次,b和1相加 也就是一个byte类型数据和一个int型数据相加,结果被强转为int型,第二次,然后再把这个int类型数据放到一个byte类型的数据中,判断之后发现会放不下,所以出错了,byte占8位 ,int占34位,应该知道吧。
b+=1; 这个没有报错,是因为他只进行一次判断,只判断b+1是不是在byte类型范围内,是的话就把他强转为byte型,所以不会出错,关键是他有一个自动转换动作。 |
|