黑马程序员技术交流社区

标题: &和&& [打印本页]

作者: qiubaoyang    时间: 2014-4-9 14:22
标题: &和&&
本帖最后由 qiubaoyang 于 2014-4-9 23:20 编辑

请问一下:&&&的区别?
作者: qiubaoyang    时间: 2014-4-9 14:27
&&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false
&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式,例如,对于if(str != null && !str.equals(“”))表达式,当strnull时,后面的表达式不会执行,所以不会出现NullPointerException如果将&&改为&,则会抛出NullPointerException异常。If(x==33 & ++y>0) y会增长,If(x==33 && ++y>0)不会增长
&还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作,我们通常使用0x0f来与一个整数进行&运算,来获取该整数的最低4bit位,例如,0x31 & 0x0f的结果为0x01

作者: luoyilan222    时间: 2014-4-9 14:32
& 是按二进制的按位与,即 1 & 1 = 1   1 & 0 = 0   3 & 1 → 11(二进制) & 1 = 1
&& 是逻辑与,true & true = true, true & false = false
作者: 闲人    时间: 2014-4-9 14:34
& 和 &&区别:
                     & :无论左边结果是什么,右边都参与运算。
                     &&:短路与,如果左边为false,那么右边不参数与运算。
作者: 姜姗姗    时间: 2014-4-9 21:45
相同点:就是两边都为1时,结果才是true
区别:
& :无论左边结果是什么,右边都参与运算。
  &&:短路与,如果左边为false,那么右边不参数与运算。(这种经常性的影响判断结果,所以这个我觉得最常用,也是需要记住狠的)
作者: K.L.Zous    时间: 2014-4-9 23:12
&是按位与 绝对与 与之有差别的&&是短路与 当左边条件使结果一定的时候就不去计算右边了
作者: show_play    时间: 2014-4-10 02:19
很好记的。
与是false   或是ture。
单与要判断两边。或也是。
双与又叫短路与,都短路了。那就判断一边。同短路或。
作者: fufeng    时间: 2014-4-10 20:35
a&b   a,b都要判断;a&&b  如果a为true,则b就不用判断了
作者: fufeng    时间: 2014-4-10 20:37
fufeng 发表于 2014-4-10 20:35
a&b   a,b都要判断;a&&b  如果a为true,则b就不用判断了

a&b   a,b都要判断;a&&b  如果a为false,则b就不用判断了
作者: 山治0712    时间: 2014-4-10 23:13
&如果左边如果是false还去执行右边;&&的左边如果是false就不执行右边了(高效一点);&还可以惊醒位运算;
作者: Emperors    时间: 2014-4-11 22:36
&:无论左边是true是false.右边都运算。
&&:当左边为fal运算。
作者: 東少    时间: 2014-4-11 23:13
& 参与运算的2个数,若相应位数值都为1则该位结果值是1 否则是0  左边无论真假右边都参与运算
&& 和&的结果相同,具有短路效果,当左边为false时,右边不参与运算,如果左边为true 右边参与运算  
作者: skyfly    时间: 2014-4-12 04:13
逻辑运算符**和位运算符*的区别和共同点
直接例子说明:
public class LogicCharacter {
   
public static void main(String[] args) {
int a=1,b=2;
//-----------&&和&都有逻辑运算符AND的功能
if(a==1&&b==2)
{
  System.out.println("ok1");
}
if(a==1&b==2)
{
  System.out.println("ok2");
}
    //-----------&&具有短路的功能
String str=null;
if(str!=null&&str.equals(""))
{
  System.out.println("ok3");
}
if(str!=null&str.equals(""))
{
  System.out.println("ok4");
}
    //----------&按位的处理
System.out.println(0x31 & 0x0f);
}

}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2