只有1对。
&是位运算符,&&是布尔逻辑运算符而且是短路与操作符。
注意:&就根本不应该作为逻辑运算用的。所谓的可以作为逻辑运算实际上是判断运算的结果是不是等于0,而由于要进行逻辑与操作,必须先要求出两边操作数的值(这个就好像是非短路了)。不过这不是java语言所支持的,混淆了和C的区别。绝对错误的概念。
我很纳闷你所说的
呵呵,&与&&在不用的地方肯定是有自己的说法和用法了
在数字电路中有数字电路的用法,在java编程语言中有它的用法
怎么可以把他们拿到一起讨论呢
就好比吧,男人是站着撒尿而女人是蹲下撒尿,大家都有膀胱为什么不一样呢??????????
呵呵
在java中条件与(&&)和逻辑与(&),以及条件或(||)和逻辑或(|)在布尔值运算上具有相同的结果。区别在于他们的运算过程是不相同的。条件与(&&)和条件或(||)采用的是所谓的“短路规则”,即在运算时先根据第一个操作数进行判断,如果从第一个草数就可以推出结果,那么就不会去计算第二个操作数。例如,a,b都是boolean型的变量,当a=true时,不管b取什么值,a||b均为true。这样b在条件或(||)运算下就不会被计算。而逻辑与(&)和逻辑或(|)则没有采用这一规则,不关第一个操作数值是什么,第二个操作数仍然会被计算。这样,当进行符合运算时,就可能出现不同的结果。
为了验证上面说的短路规则,请看下面的例子。首先声明变量month,并赋初值8。在程序的执行过程中均不修改变量month的值,从而在下面的布尔运算中,(month==8)一直保持为真。程序通过变量day的值是否发生变化来验证短路规则。
//test.java
public class test
{
public static void main(String [] args)
{
int month=8;//声明变量month,并赋8
int day=1;//声明变量day,值为1
if((month==8)||(++day<15))
System.out.println("Month="+month+"Day="+day);
if((month==8)|(++day<15))
System.out.println("Month="+month+"Day="+day);
}
} //End
执行的结果是:
Month=8 Day=1
Month=8 Day=2
}
}
在上面的程序中,关系(month==8)一直成立,所以上面的布尔运算结果均为真。在第一个条件语句“if((month==8)||(++day<15))”中,由于短路规则,所以(++day<15)不会被执行,从而这时变量day的值不会发生变化,即仍然为1。因此,输出的第一行为“Month=8 Day=1”。当执行到第二个条件语句“if((month==8)|(++day<15))”时,由于逻辑或(|)会计算第二个操作数,所以计算结果造成变量day的值发生变化,即变成2。因此,输出第二行为“Month=8 Day=2”。这也就验证了条件或(||)遵循短路规则,而逻辑或(|)不怎寻短路规则。
http://www.webjx.com/JavaScript/20071210/javascript_js_1926.html
自己查也一下,也不是很懂..
这个网页你看下吧..可能有点用..
&需要计算两边表达式的值,然后计算整个逻辑表达式的值
&&短路法,第一个表达式的值为FALSE,那么整个逻辑表达式的值为FALSE,第二个表达式不计算!
下同!