请大家解释一个JAVA表达式:array[index] &= ~PACKET;

来源:百度知道 编辑:UC知道 时间:2024/05/26 12:43:30
请大家解释一个JAVA表达式:array[index] &= ~PACKET;

在Sun给的源代码里面看见的,一时没反应过来是什么意思,不知道哪位能帮忙解答一下。
另外再请问一段代码
private int indexOffset(int move) {
switch (move & 3) {
case LEFT:
return -1;

case RIGHT:
return +1;

case UP:
return -width;

case DOWN:
return +width;
}

return 0;
}
其中的switch (move & 3)括号里的内容我弄不明白,貌似括号里只能是变量,但是move & 3似乎是表达式吧。
还请高人给以解惑啊,不胜感激

(1)java里面a = a + b;可以写成
a += b;这个应该知道吧。

(2)& 和 ~都是位操作符比如:
int a =1;
int b= 2;
a &= ~b; // 等效于 a = a & (~b);
System.out.println(a);

这个位运算你可以这样看。。。a = 1 = 001(8进制)
b = 2 = 010(8进制)
~b = ~(010) = 101
然后是a 和 b 与运算。结果是 a & ~b = 001 & 101 = 001 = 1
所以 a &= ~b = 1;

PACKET 是一个变量 ~PACKET表示对这个变量取反
&= 类似于+=
array[index] &= ~PACKET;
相当于是array[index] = ~PACKET&array[index];
先对PACKET进行取反操作,然后和array[index]进行按位与操作
最后将得到的值再赋值给array[index]

这个过程就是这样,具体里面的变量有什么用,你可以根据上下文看看。