黑马程序员技术交流社区

标题: &和&&的区别 [打印本页]

作者: 胡晓思    时间: 2013-6-4 12:37
标题: &和&&的区别
本帖最后由 胡晓思 于 2013-6-4 18:03 编辑

如题:&和&&的区别

作者: joker_chan    时间: 2013-6-4 12:43
&是非短路的。&&是短路的。意思就是boolean a = false,b= true; a&b 判断的时候不管a是不是true都会去判断b 而a&&b 当a为false就不会去判断b了。
作者: 山鹰    时间: 2013-6-4 12:43
&和&&的区别:
&:左边是false是true,右边都运算
&&:左边是false时,右边不运算

作者: 狂飙的yellow.co    时间: 2013-6-4 12:43
&和&&都可以用作逻辑与的运算符,表示逻辑与(and),

当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。

&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式,

例如,对于if(str != null && !str.equals(“”))表达式,当str为null时,后面的表达式不会执行,所以不会出现NullPointerException如果将&&改为&,则会抛出NullPointerException异常。

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

作者: 殇_心。    时间: 2013-6-4 16:13
如果问题已解决,请及时修改分类,否则继续提问,谢谢合作!
作者: 胡晓思    时间: 2013-6-4 18:10
殇_心。 发表于 2013-6-4 16:13
如果问题已解决,请及时修改分类,否则继续提问,谢谢合作!

版主  伤心了   我两个帖子  你一分都没给  回复都给了  呜呜....
作者: 王新年    时间: 2013-10-31 20:31
java中,&连接两个数字的时候,它是表示两个位的按位与,而&&表示两个条件的并列,除些之外,&和&&还存在一些其他的区别,请看下面一段程序的:
作者: 王新年    时间: 2013-10-31 20:31
java中,&连接两个数字的时候,它是表示两个位的按位与,而&&表示两个条件的并列,除些之外,&和&&还存在一些其他的区别,请看下面一段程序的:
public class Test1 {
public static void main(String[] args) {
  int a=2;
  int b=1;
  if((a==1)&((++b)==2)){
   System.out.println("a1="+a);
   System.out.println("b1="+b);
  }
  System.out.println("a2="+a);
  System.out.println("b2="+b);
   a=2;
   b=1;
  if((a==1)&&((++b)==2))
  {
   System.out.println("a3="+a);
   System.out.println("b3="+b);
  }
  System.out.println("a4="+a);
  System.out.println("b4="+b);
}
}
结果为:a2=2
    b2=2
    a4=2
    b4=1
其中的&&称为短路操作,当它前面的条件不成立时,它不再执行后面的代码,而&不同,它不管前面的代码真假,都会执行后面的代码.这是另一个&和&&的区别.
作者: jagon    时间: 2014-3-12 12:18
A&B,语句A和语句B都会执行,&&又称短路与,A&&B只有当语句A为真时才会执行语句B,如果语句A为假,就不会继续判断语句B,即语句B将不会执行!
作者: jagon    时间: 2014-3-12 12:20
A&B,语句A和语句B都会执行,&&又称短路与,A&&B只有当语句A为真时才会执行语句B,如果语句A为假,就不会继续判断语句B,即语句B将不会执行!
作者: 梁宝昌    时间: 2014-9-2 00:07
&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。
&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式,例如,对于if(str != null&& !str.equals(“”))表达式,当str为null时,后面的表达式不会执行,所以不会出现NullPointerException如果将&&改为&,则会抛出NullPointerException异常。If(x==33 &++y>0) y会增长,If(x==33 && ++y>0)不会增长
&还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作,我们通常使用0x0f来与一个整数进行&运算,来获取该整数的最低4个bit位,例如,0x31 & 0x0f的结果为0x01。

作者: l763631191    时间: 2014-12-18 00:40
嗯 受教了




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