java里 &和&&代表什么? 看书上说的是&是按位运算符 &&是逻辑与 但老师却说&是逻辑与 &&是短路与;而且

2024-12-03 00:12:52
推荐回答(5个)
回答1:

&既是位运算符也是逻辑运算符。
&位运算符,可以对数字的二进制数进行与操作。例如:int x = 2&3;就是将2的二进制数与3的二进制数按照位对应进行与操作。并将结果赋值给x。
&也可以用作逻辑运算符,进行条件判断。例如:if(x>=2 & y<=3)。当&是逻辑运算符的时候主要和&&的区别。&&是短路与,不需要对所有的表达式进行判断。例如:
int x = 2,y=3;
if(x>3 && y++>2)
{
......
}
System.out.println(y); //打印出的y还是3,说明y++没有执行。原因,x>3已经不成立了,所以就不必要判断后面表达式的真假了。而如果把&&换成&,那么y的值就为4了。既是前面表达式为假了,也会进行后续表达式的判断,没有短路处理。

回答2:

你好
&书上说的按位运算,就是你老师说的按位与,也就是逻辑与
至于& 是非短路与,&&是短路与
举个例子
boolean a = false;
boolean b = true;
a&b 和 a&&b
a&b 就是当判断出a是false,还会继续判断b的值
而a&&b 是短路与,当a判断为false,就不会在去判断后面的b了,就是&&后面的表达式 不会执行了

回答3:

&是按位鱼运算符,比如21&9=10101&01001=00001=1,&&是逻辑与,如A&&B,A、B均为表达式,进行如下判断,首先判断A是否为false,若A为false,则A&&B为false,否则判断B,若B为true,则A&&B为true,否则为false。
我刚才也试过,boolean类型变量亦可进行按位与运算,只有true&true结果为true,其他结果均为false。

回答4:

我不知道上面这些人在瞎答些什么。&既是逻辑与也是按位与。由于java中布尔型与其他类型并不能相互转换,即1与TRUE并不等效,所以&对布尔型就是逻辑与,对其他类型是按位与。

回答5:

当&前面的条件为false的时候,&后面的依然会比较
而&&前面的为false的时候,就直接false了
举个最简单的例子
if(user!=null & user.getName!=null){
return "";
}
如果user为null,则会报空指针异常,,因为后面的依然会在比较
而如果换成&&,则不会。因为为null的时候直接false