黑马程序员技术交流社区

标题: 关于&,&&和and的用法疑问 [打印本页]

作者: 詹英鹏    时间: 2011-12-29 18:21
标题: 关于&,&&和and的用法疑问
本帖最后由 詹英鹏 于 2011-12-29 21:08 编辑

首先我知道 & 表示“与”运算 还有“&&”也表示“与”
比如 12 & 23 ,他是表示二进制“与”运算
但是这个句子怎么回事
for(..;..;..)
{

          if(i==0 && j==0)
              {
               System.out.println("非法数值")
              }
            else continue;
}
这局代码中的 “&” 这么理解啊 ?
还有一个 把代码中的 “&&” 改成”&“ 为什么也行啊,
“&”不是位与运算啊
还有一个 我发现如果直接用”&&“代替”&“,这样
int i=13 && 14;
System.out.println(i);就报错
他们到底是不是一样啊,很郁闷弄半天没明白 希望帮我解答一下 最好是弄个简单的例子
哦,还有这个关键and在java中有吗?和&&有区别么?
作者: 李爱霞    时间: 2011-12-29 18:32
&和&&都可以用作逻辑与的运算符,表示逻辑与(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)不会增长
i=1;   
j=1;   
if(i++ <0&j++>0){   

}   
System.out.println(j);
i=0;   
j=1;   
if(i++ <0&&j++>0){   

}   
System.out.println(j);

此外
&还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作,我们通常使用0x0f来与一个整数进行&运算,来获取该整数的最低4个bit位,例如,0x31 & 0x0f的结果为0x01。

作者: 房宝彬    时间: 2011-12-29 18:41
本帖最后由 房宝彬 于 2011-12-29 18:42 编辑

你这问题问的真多,我给你个建议你还是在看看视频吧,我给你解答这个问题



for(..;..;..)    这是一个无限循环,
{

          if(i==0 && j==0)  这是一个判断,在无限循环里必须要有判断,否则你CPU就冒烟了,哈哈 &&这个意思是两边结果都是true结果才是true,有一个结果为false那结果就
                      是false
              {
               System.out.println("非法数值")   这就是判断if表达式里是true 还是false,是true的话就执行,不是的话就不执行,。
              }
            else continue;      这里表示,如果if判断结果为false, 就跳出当前循环,进行下一次循环。
}




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