黑马程序员技术交流社区
标题:
&&和&的不解
[打印本页]
作者:
年轻的棒棒
时间:
2013-5-21 09:35
标题:
&&和&的不解
本帖最后由 年轻的棒棒 于 2013-5-21 12:58 编辑
已经知道&&和&的运算结果是一样的,并且当左边为false时,右边将不参与运算,那是不是意味着&在java中是没有什么实际意义的呢?
作者:
ミ后来我经过梵
时间:
2013-5-21 09:45
&和&&的区别?
答:(1)&&会出现短路,如果可以通过第一个表达式判断出整个表达式的结果,则不继续后面表达式的运算;
只能操作boolean类型数据;
(2)&不会出现短路,将整个表达式都运算。既可以操作boolean数据还可以操作数。
作者:
SOAR
时间:
2013-5-21 10:07
怎么可能没意义呢?只是你还没遇上这类问题罢了。
作者:
张得贵
时间:
2013-5-21 10:36
每一个都有它的意义,,对于&运算来说,就如同汉语中的和,只有两边同时为true,它才为true,其中一个为false,结果就是false。
而&&运算,会出现短路现象,当左边出现false,右边保持不变。
例如:false&true------>false
false&&true------>false,二者结果一样,但是&&运算中右边的值是不变的。
个人理解,&运算是用于判断同时满足条件时用,&&运算用于判断满足几个条件中的一个时用,二者的应用场景不一样。
作者:
壹旪傾峸
时间:
2013-5-21 10:38
& 和 &&
前者:是按位与,也就是说在与之前,先将数据转换成二进制代码,然后在进行与操作,
在条件语句中,可以当做逻辑与,这个逻辑“与”与“&&”这个与有些区别
后者:逻辑与,返回一个boolean值
区别:前者,是非短路也就是说,即使前面的条件是false 但是还要执行后面的语句 ,而&&如果前面条件为false那么就不执行后面的语句了
例如:j=1;
if( (++j ==1)&(j++==1))
System.out.println(j);
“&”前面的条件返回的是false ,但是还执行j++,所以这个输出的j是3
如果换成“&&”则输出的是2
(希望对你有所帮助吧)
作者:
张林敏
时间:
2013-5-21 12:55
壹旪傾峸 发表于 2013-5-21 10:38
& 和 &&
前者:是按位与,也就是说在与之前,先将数据转换成二进制代码,然后在进行与操作,
在条件语句中 ...
不错,很容易理解
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2