在java中下面几个赋值运算符
就拿+= 来做例子
1、说明 赋值运算符的遵守语法
计算下面的值
int x = 2;
System.out.print(x +=x++); 输出结果为4 原因是 x++ =2 x +=x++ 就可以写为x +=2 这样结果就是4
System.out.print(x += ++x) ; 输出结果为5 原因是++x =3 x += ++x 就等价于 x +=3 结果就是4
System.out.print((x++) += ++x) ; 这是会成功吗 答案是否定的 不成功 编译器会报 “The left-hand side of an assignment must be a variable”
一个赋值的左边必须是变量
这就说明了 赋值运算符的左边 必须是一个变量 而不是一个表达式有些人为了图方便 往往会写成这样 孰不知竟犯了最基本的错误。
2、赋值运算符的保证原值不变
例如 int a =2;
a += a*4 /++a + 2
这样有些人就说了 结果应该是 ++a =3 右边是 3*4/3 +2=6 结果就应该是8 其实不然 这是一个概念理解错误 a的值只要在之前没有被重新赋值 那么他的值就是初始值 所以结果应该是 2*4/3 +2 +2 = 6
现在又有人说了 不应该是6.7 吗怎么成6了 应为赋值运算符还有一个特性就是运算前后不改变 结果的类型 因为初始a的类型是int 所以结果是int 行的要想得到6.7 就应该进行将a的类型修改为float
下面的这个容易出错,应该注意
byte a = 127
System.out.print(a +=1 ) 有些人说这个太简单了 不就是128 吗 打错特错了 大家要看清楚a的类型是byte 而byte的范围是 -128~~~127 127对应的二进制数是01111111
0表示正数,后续的数值表示127
该数值加1后,得到的数值是10000000,二进制加法 这样就应该是-128 而不是128