哪有‘=+'?
对于 +=1,内部自动转换,也就是说类型不提升;
但是对于 byte b = b + 1;Java自动看成是两步操作,‘1’被当成 int,所以自动提升为int,所以需要强制转换。
只是对于‘+=’比较特殊,内部自动看成是一个一步到位。
对于 +=1,内部自动转换,也就是说类型不提升;
但是对于 byte b = b + 1;Java自动看成是两步操作,‘1’被当成 int,所以自动提升为int,所以需要强制转换。
只是对于‘+=’比较特殊,内部自动看成是一个一步到位。
{
// TODO Auto-generated method stub
byte a, b, c, d, e;
int i;
a = b = c = d = e = 127;
System.out.println(a += 1); //相当于 a = (byte)(a + 1);结果是-128
System.out.println(b++); //这个应该知道,先打印,后引用,127;
System.out.println(++c); //结果:127+1=-128
System.out.println(d = (byte) (d + 1));// 相当于d += 1;
System.out.println(i = e + 1); //这个是将e+1的值赋值给int类型的i,128
}
byte b =1 ;
int a = b++;当一个java算术表达式中包含多个基本类型的值时,整个算术表达式的数据类型将发生自动提升。Java定义如下的自动提升规则:
1. 所有byte型、short型和char型将被提升到int型。
2. 整个算术表达式的数据类型自动提升到与表达式中最高等级操作数同样的类型。操作数的等级排列如下图所示,位于箭头右边类型的等级高于位于箭头左边类型的等级。