黑马程序员技术交流社区

标题: 逻辑与 [打印本页]

作者: 高廷平    时间: 2012-8-26 18:25
标题: 逻辑与
逻辑与运算:&& 和 & 有什么区别啊?
作者: 唐见    时间: 2012-8-26 18:40
他们都是双元运算符。左边表达式和右边表达式简称为左边和右边。
&与:无论左边是true是false,右边都运算。
&&短路与:当左边为false时,右边不参与运算
例如:
boolean flag=3<2&3/0>2;//左边为false,右边依然参与运算,程序会报异常
boolean flag1=3<2&&3/0>2;//而&&不同,左边为false,右边就不再参与运算,程序不会报异常
作者: 方志亮    时间: 2012-8-26 18:42
&与&&区别
        &&如果可以通过第一表达式的值判断出整个式子的结果,那么后面的运算不会在运行。
        & 无论怎样,会将整个式子运算完成后求出结果
       
        按位&  |  可以操作数字
        断路&& || 只能操作boolean类型数据
       
        &&还是& 原则就是如果有一个为false,结果就为false
作者: 广驰    时间: 2012-8-26 18:46
运算方式不一样&与:不管运算符两边是真是假都要进行判断
而&&短路与:执行判断时如果左边为假时,那么毫无疑问结果肯定为假,就不对右边进行判断了,也算是节省CPU
作者: 高廷平    时间: 2012-8-26 18:58
{:soso_e189:}
作者: 高廷平    时间: 2012-8-26 19:09
此问题已解决!
作者: 黑马-李勇    时间: 2012-8-26 23:12
把题目改成已解决{:soso_e113:}
作者: 黄佳    时间: 2012-8-26 23:36
&& 在运算时如果式子左边是flase就已经能够判断整个式子的值,那么右边的表达式不用运算了
&  两边的表达式都运算再得出整个表达式的结果
作者: 谭立文    时间: 2012-8-27 15:01
&和&&都可以用作逻辑与的运算符,表示逻辑与(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)不会增长

出自张孝祥老师的就业面试宝典

作者: 孔德智    时间: 2012-8-27 18:13
举个例子来解释一下吧,
false&true-->false
false&&true-->false
单从结果上看,他们结果是一样的,都是false
但是前者在运行的时候,计算机首先判断第一个条件为false,然后判断第二个条件true,然后判断出结果为false
而后者,首先也是判断第一个条件,当判断出为false时,程序立即终止,因为不管第二个条件是什么,结果一定为false,是逻辑短路





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