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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 吴文华 黑马帝   /  2012-2-17 09:14  /  3727 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 吴文华 于 2012-2-17 13:09 编辑

我想问下  逻辑操作(&,|,^)与条件操作(&&,||)的区别?  看视频看的有点糊了!

5 个回复

倒序浏览
&&被称为短路与,&&运算表达式从左往右计算时,如果发现一个false值,就放弃继续运算,直接将false作为最后整个表达式的结果并返回,
&被称为逻辑与,该运算符在计算表达式结果时,表达式的每个操作数都要参与计算,然后才得出整个表达式的计算结果。
|和||运算符的区别与&和&&的情况类似,||运算符如果遇到true操作数就放弃后续运算,将true作为整个表达式的计算结果并返回。
它们两者的执行效率不同,尽量采用执行效率优的。

评分

参与人数 1技术分 +1 收起 理由
唐秀启 + 1

查看全部评分

回复 使用道具 举报
&,|,^是整数运算符  ; &&,||是逻辑运算符
例如:string a = 1;
string b = 2;
if(a ==2 && b == 2);
a==2已经为false,所以&&后面的b==2就不用判断了,结果是false
如果改为&,则&左右两边的都要参与判断,结果是false
|和||运算符的区别与&和&&的区别类似

评分

参与人数 1技术分 +1 收起 理由
唐秀启 + 1

查看全部评分

回复 使用道具 举报
&和&&都可以用作逻辑与的运算符,表示逻辑与(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。

     ||用作逻辑运算符,当两个操作表达式全部为false时,结果为false, 当有一个为true时,结果为true

     | 用作位运算符,|两边的操作数按二进制位运算,两个0时为0,否则为1

     ^用作位运算符,两边的操作数按二进制位运算,相同为0,不同为1

评分

参与人数 1技术分 +1 收起 理由
唐秀启 + 1

查看全部评分

回复 使用道具 举报
写文字估计你也不想看,建议你去看看毕老师讲的,很简单的例子,比文字效果更佳
回复 使用道具 举报
逻辑操作(&,|,^)与条件操作(&&,||)有区别,比如:
int a,b;
a&b和a&&b都是当a和b都是真的情况下为真,有一个为假就为假。区别是a&b中,不管a是真是假,b都会进行判断,而a&&b中,如果a是假的话,b 就不再判断了,即判断b是在a为真的前提下,也就是有条件的。
而|和||的区别类似
而^是异或判断,即看看两边是不是不同,不同的话就为真,相同的话就为假
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马