A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© qiubaoyang 中级黑马   /  2014-4-9 14:22  /  1192 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 qiubaoyang 于 2014-4-9 23:20 编辑

请问一下:&&&的区别?

12 个回复

倒序浏览
&&&都可以用作逻辑与的运算符,表示逻辑与(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

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
& 是按二进制的按位与,即 1 & 1 = 1   1 & 0 = 0   3 & 1 → 11(二进制) & 1 = 1
&& 是逻辑与,true & true = true, true & false = false
回复 使用道具 举报
& 和 &&区别:
                     & :无论左边结果是什么,右边都参与运算。
                     &&:短路与,如果左边为false,那么右边不参数与运算。

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
相同点:就是两边都为1时,结果才是true
区别:
& :无论左边结果是什么,右边都参与运算。
  &&:短路与,如果左边为false,那么右边不参数与运算。(这种经常性的影响判断结果,所以这个我觉得最常用,也是需要记住狠的)

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报 1 0
&是按位与 绝对与 与之有差别的&&是短路与 当左边条件使结果一定的时候就不去计算右边了
回复 使用道具 举报
很好记的。
与是false   或是ture。
单与要判断两边。或也是。
双与又叫短路与,都短路了。那就判断一边。同短路或。
回复 使用道具 举报
fufeng 中级黑马 2014-4-10 20:35:45
8#
a&b   a,b都要判断;a&&b  如果a为true,则b就不用判断了
回复 使用道具 举报
fufeng 中级黑马 2014-4-10 20:37:59
9#
fufeng 发表于 2014-4-10 20:35
a&b   a,b都要判断;a&&b  如果a为true,则b就不用判断了

a&b   a,b都要判断;a&&b  如果a为false,则b就不用判断了
回复 使用道具 举报
&如果左边如果是false还去执行右边;&&的左边如果是false就不执行右边了(高效一点);&还可以惊醒位运算;
回复 使用道具 举报
&:无论左边是true是false.右边都运算。
&&:当左边为fal运算。
回复 使用道具 举报
& 参与运算的2个数,若相应位数值都为1则该位结果值是1 否则是0  左边无论真假右边都参与运算
&& 和&的结果相同,具有短路效果,当左边为false时,右边不参与运算,如果左边为true 右边参与运算  
回复 使用道具 举报
逻辑运算符**和位运算符*的区别和共同点
直接例子说明:
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);
}

}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马