我想到了两个表达式来将位运算的值赋给一个变量,并且注意到在这种情况下,“x+=y”和“x=x+y”的结果是不同的:
public void random ()
{
int n = 43261596;
System.out.println(Integer.toBinaryString(n));
n = n + 0&1; //binary representation of n is 0
//n += 0&1; //result is the same as n
System.out.println(Integer.toBinaryString(n));
}
我做了一些研究,发现只有在操作数类型不同时,“x+=y”和“x=x+y”的结果才不相同。然而,在这种情况下,“n”是
int
类型,“0&1”应该也是int
类型(根据这个问题:为什么Java中两个short值的按位与运算结果是一个int值?:因为Java语言规范规定非长整型算术的结果始终是一个int)。所以我想知道为什么会产生不同的结果。