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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 高廷平 中级黑马   /  2012-8-26 18:25  /  1919 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

逻辑与运算:&& 和 & 有什么区别啊?

9 个回复

倒序浏览
他们都是双元运算符。左边表达式和右边表达式简称为左边和右边。
&与:无论左边是true是false,右边都运算。
&&短路与:当左边为false时,右边不参与运算
例如:
boolean flag=3<2&3/0>2;//左边为false,右边依然参与运算,程序会报异常
boolean flag1=3<2&&3/0>2;//而&&不同,左边为false,右边就不再参与运算,程序不会报异常
回复 使用道具 举报
&与&&区别
        &&如果可以通过第一表达式的值判断出整个式子的结果,那么后面的运算不会在运行。
        & 无论怎样,会将整个式子运算完成后求出结果
       
        按位&  |  可以操作数字
        断路&& || 只能操作boolean类型数据
       
        &&还是& 原则就是如果有一个为false,结果就为false
回复 使用道具 举报
运算方式不一样&与:不管运算符两边是真是假都要进行判断
而&&短路与:执行判断时如果左边为假时,那么毫无疑问结果肯定为假,就不对右边进行判断了,也算是节省CPU
回复 使用道具 举报
{:soso_e189:}
回复 使用道具 举报
此问题已解决!
回复 使用道具 举报
把题目改成已解决{:soso_e113:}
回复 使用道具 举报
黄佳 中级黑马 2012-8-26 23:36:49
8#
&& 在运算时如果式子左边是flase就已经能够判断整个式子的值,那么右边的表达式不用运算了
&  两边的表达式都运算再得出整个表达式的结果
回复 使用道具 举报
&和&&都可以用作逻辑与的运算符,表示逻辑与(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)不会增长

出自张孝祥老师的就业面试宝典
回复 使用道具 举报
举个例子来解释一下吧,
false&true-->false
false&&true-->false
单从结果上看,他们结果是一样的,都是false
但是前者在运行的时候,计算机首先判断第一个条件为false,然后判断第二个条件true,然后判断出结果为false
而后者,首先也是判断第一个条件,当判断出为false时,程序立即终止,因为不管第二个条件是什么,结果一定为false,是逻辑短路
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马