黑马程序员技术交流社区
标题:
&和&&的区别?
[打印本页]
作者:
秦驰
时间:
2011-7-17 09:53
标题:
&和&&的区别?
&和&&的区别?
作者:
匿名
时间:
2011-7-17 10:15
&和&&都可以用作逻辑与的运算符,表示逻辑与(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。(以上引用张孝祥就业面试题,因为老师说得很详细了,我觉得应该对你有帮助。)
作者:
匿名
时间:
2011-7-17 13:14
& 是位运算符,&的运算结果只能是1或者0,这个我的很少用。也几乎没用
&& 是关系运算符,&&的运算结果才能是true或者false,这个不用说吧,就是我们代码里
if(这个位置的 关系判断 ){
}
晓得没
作者:
匿名
时间:
2011-7-17 14:03
这样的都问题都可以刷分!!无语啦。。
&是位运算符 按位"与"的意思
81&(-69)=17
就是
01010001&10111011=00010001
懂了吗
&&是布尔逻辑运算符,起到短路的作用。当第一个操作数或表达式的值已经能够确定整个表达式的值时,将跳过第二操作数或子表达式而直接得出结果。。
例如
a为true
b为true
a&&b为true
a为true
b为false
a&&b为false
a为false
b为true
a&&b为false
a为false
b为false
a&&b为false
作者:
匿名
时间:
2011-7-17 16:54
标题:
回复 沙发 的帖子
正解!
但是 太长了,有点……(但是对于初学者却是有用!!)
与
& 位运算
&& 逻辑运算
&& 具有短路保护 从左向右运算
呵呵,这样写貌似对新手没什么帮助,权当api了
作者:
王海飞
时间:
2011-7-17 22:22
&& 这两个被称为 "断路与"
& 这两个就是非
以||和|解释下:
断路执行效率更高一点.
假设if(a==b||c==d) 满足这个条件才进入if. 的时候,会先判断断路符号左边的. 如果左边的满足,才会再判断断路符号右边的. 也就是说,当a!=b的时候. 直接就等于false了. 而非断路符号的"|",不管左边是true还是false,都会执行右边的.然后再通过整个表达式判断最终结果. 所以执行效率高. "断路与"也是同样的道理。
请看如下例子
例如:
class A{
public static void main(String args[]){
boolean b;
int i=0,j=0;
b=i++>0&&++j>0;
System.out.println("b="+b+"i="+i+"j="+j);
i=j=0;
b=i++>0&++j>0;
System.out.println("b="+b+"i="+i+"j="+j);
}
}
答案输出:
b=falsei=1j=0
b=falsei=1j=1
[
本帖最后由 王海飞 于 2011-07-17 22:24 编辑
]
作者:
匿名
时间:
2011-7-17 22:25
这都可以啊
作者:
匿名
时间:
2011-7-17 22:32
&&(短路与)与&的区别是:
如果是&,当左边为false时,右边也要运算。
如果是&&,当左边为false时,右边不会再运算了。
作者:
匿名
时间:
2011-7-18 10:52
短路与&&如果第一个表达式值为false,后边的表达式不需要运算。另外一个需要全部运算
(有必要很麻烦的回复?)
作者:
匿名
时间:
2011-7-18 13:40
&是位运算符,当前后都为时结果才为1。即1&1==1,1&0==0。
&&是关系运算符,当前后为true时结果才为true。即true&&true=true,flase&&true==false。
作者:
匿名
时间:
2011-7-18 21:08
结贴了,下面不要回了!!!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2