java中&与&&的区别,请明白的人来回答

来源:百度知道 编辑:UC知道 时间:2024/06/21 17:33:57
java中&与&&的区别,我参考了很多人的说法,大致有以下几种:
1.&是位运算符,&&是布尔逻辑运算符
2.&是非短路逻辑运算符,&&是短路逻辑运算符
3.我们老师的说法: &既是逻辑运算符,又是位运算符,当&作为逻辑运算符时属于非短路型,而&&只是短路型逻辑运算符

请大家说说哪个对呀?谢谢啦
//这是我们老师讲逻辑运算符时举的例子,结果b=13,c=4
public class TestLogic{
public static void main(String[] args){
int a=2, b=3, c=4;
if (a<2 & (b=13)>10)
System.out.println("不可能!");
if (a<2 && (c=14)>10)
System.out.println("不可能!");
System.out.println("b=" + b);
System.out.println("c=" + c);
}
}

只有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