&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)
&作为运算符的时候是二进制
对于每一位,当两个都是1的时候结果为一,反之为零。
111000111
&101010101
----------
101000101
A&=1;
等于
A = A & 1;
效果为如果A是单数的话A就变成0,否则就变成1。
给你个例子:
public static void main(String[] args){
int i1 =1,b1=2;
//使用&&
if(i1==2 && (b1++)== 3){
System.out.println("使用&&:b1="+b1);
}else{
System.out.println("使用&&:b1="+b1);
}
//使用&:
int i2 =1,b2=2;
if(i1==2 & (b2++) == 3){
System.out.println("使用&:b2="+b2);
}else{
System.out.println("使用&:b2="+b2);
}
}
打印结果:
使用&&:b1=2
使用&:b2=3
使用&&的话如果第一个条件不符合就不会执行后面的条件
使用&的话两个条件都会执行。
可以看出 & 和 && 都是与的运算符 但&会不管两个条件对与错 都会运算一遍所以 b2 作了 b2++ 运算 ,结果变成了3.
哪看到的?有没一段程序?
那是A 和 1做与运算再把 一个值 赋回给A和 A +=1差不多吧
举个例子,
A 是16进制的10,转成2进制:
00001010
1 同样转成2进制:
00000001
---------
把它们进行&运算:
00001010
&00000001
---------
00000000 ,看它们上下对应的0,1,如果同时为1时,结果为1,否则,通通置0
OK,问题解决啦
一个&是指 与,应该看的懂吧
二个&是指 and,就是并且得意思,一般用在if语句里比较多