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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 胡晓思 中级黑马   /  2013-6-4 12:37  /  2927 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 胡晓思 于 2013-6-4 18:03 编辑

如题:&和&&的区别

评分

参与人数 1技术分 +1 收起 理由
殇_心。 + 1 这回就奖励了。 记得多问点技术性问题.

查看全部评分

12 个回复

倒序浏览
&是非短路的。&&是短路的。意思就是boolean a = false,b= true; a&b 判断的时候不管a是不是true都会去判断b 而a&&b 当a为false就不会去判断b了。
回复 使用道具 举报
&和&&的区别:
&:左边是false是true,右边都运算
&&:左边是false时,右边不运算

评分

参与人数 1技术分 +1 收起 理由
殇_心。 + 1

查看全部评分

回复 使用道具 举报
&和&&都可以用作逻辑与的运算符,表示逻辑与(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。

评分

参与人数 1技术分 +1 收起 理由
殇_心。 + 1

查看全部评分

回复 使用道具 举报
&和&&都可以用作逻辑与的运算符,表示逻辑与(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。

评分

参与人数 1技术分 +1 收起 理由
殇_心。 + 1

查看全部评分

回复 使用道具 举报
如果问题已解决,请及时修改分类,否则继续提问,谢谢合作!
回复 使用道具 举报
殇_心。 发表于 2013-6-4 16:13
如果问题已解决,请及时修改分类,否则继续提问,谢谢合作!

版主  伤心了   我两个帖子  你一分都没给  回复都给了  呜呜....
回复 使用道具 举报
java中,&连接两个数字的时候,它是表示两个位的按位与,而&&表示两个条件的并列,除些之外,&和&&还存在一些其他的区别,请看下面一段程序的:
回复 使用道具 举报
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:54
10#
A&B,语句A和语句B都会执行,&&又称短路与,A&&B只有当语句A为真时才会执行语句B,如果语句A为假,就不会继续判断语句B,即语句B将不会执行!
回复 使用道具 举报
jagon 中级黑马 2014-3-12 12:20:04
11#
A&B,语句A和语句B都会执行,&&又称短路与,A&&B只有当语句A为真时才会执行语句B,如果语句A为假,就不会继续判断语句B,即语句B将不会执行!
回复 使用道具 举报
&和&&都可以用作逻辑与的运算符,表示逻辑与(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。
回复 使用道具 举报
嗯 受教了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马