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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马-邢广耀 中级黑马   /  2012-12-26 09:13  /  1999 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黑马-邢广耀 于 2012-12-27 10:11 编辑

谁能谁说这&和&&的区别啊。详细一点的。

评分

参与人数 1黑马币 +3 收起 理由
刘芮铭 + 3 希望能仔细看毕老师的视频,这些问题都有的.

查看全部评分

8 个回复

倒序浏览
我记得论坛有类似的帖子,楼主可以搜下
回复 使用道具 举报
1.共同点:&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符俩边表达式的结果都为true时,整个运算结果才为true,否则只要有一个为false,则结果为false。
2.不同点:&&具有短路功能,即如果第一个表达式为false,则不计算第二个表达式。
          &还可以用作位运算符,当&操作符俩边的表达式不是boolean类型时,&表示按位与操作,通常使用0x0f来与一个整数进行&运算,来获取该整数的最低4个bit位。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式结果都为true是,整个运算结果才为true,只要一方为false,那么整个运算结果为false
&&还具有短路的功能,即如果第一个表达式的为false,那么就不用再计算第二个表达式,
例如对于if(str!=null&&!str.equals(""))表达式,当str为null是,后面就不会执行了。
&还可以用作位运算符,当操作符两边的表达式不是boolean类型时,&表示按位与操作,通常使用0x0f来与一个整数进行&运算,来获取该整数的最低4个bit位。
例如,0x31&0x0f的结果为0x01;0x31转二进制是110001,0f转二进制是 1111
希望对你有帮助

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
if(a==b&b==c)
{ ..}
用&的话 程序会先判断a是否=b 如果不等于. 还要跳过判断b是否=c.
但如果if(a==b&&b==c){ ..}
是这样的话..程序判断a!=b的话 直接后面的b是否=c就不做判断了..直接跳出
.明白了吧。所以&&叫做断位符...因为它使得少判断一句..提高了效率.!

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
&:要执行完所有才能确定是true还是false

&&:具有短路效果。当能通过前面的条件结果能确定这个结果是true还是false,后面的条件不用执行了
回复 使用道具 举报
水天 中级黑马 2012-12-26 14:02:02
7#
&&只是提高效率,在判断的逻辑上还是和&一样。因为&的特点是只要一边结果为false,结果就必定为false。所以当左边是false的时候右边判不判断已经没有意义了。
于是出现了&&,当左边为false时,右边不再进行判断。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
&:代表短逻辑,当第一个为假时,结果肯定为假,但是还必须要判断第二个;
&&:代表长逻辑,当第一个为假时,结果肯定为假,不需要再判断第二个了。
回复 使用道具 举报
问题已经解决,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马