关于|和&的疑问

qnake 2004-04-09 11:49:04
1、if( i < 10 | methodB (4));
2、if( i < 10 || methodB (8));

3、if( i < 10 & methodB (4))
4、if( i < 10 && methodB (8));

1和2有什么不同,3和4呢
怎个判断顺序
...全文
38 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yugona 2004-04-09
  • 打赏
  • 举报
回复
只是有微小的差别,举个例子

int i=0;
String s=null;
1 if(i>10&&s.equals("ss"))
2 if(i>10&s.equals("sa"))

对于1不会有什么问题,因为在验证了i>10为fale后不再验证后面的。

对于2则会抛出NullPointException,虽然i>10为false,继续验证s.equals("sa"),因为s为null,所以抛出错误。
---------------------------------
以上结论未加验证,还请自己验证。
wwlwxx 2004-04-09
  • 打赏
  • 举报
回复
|和&是位操作符
||和&&是逻辑操作符
它们要两个操作数,
|和&的操作数可以是任意基本类型,它们是按位进行运算的
如 110|100=110 110&100=100
而||和&&的操作数只能是boolean。
caiyanying732 2004-04-09
  • 打赏
  • 举报
回复
1、if( i < 10 | methodB (4));无任什么条件下两个条件都要比较
2、if( i < 10 || methodB (8));当i<10为真时,就不在执行methodB(8)方法了;
3、if( i < 10 & methodB (4));无任什么条件下两个条件都要比较
4、if( i < 10 && methodB (8));当i<10为假时,就不在执行methodB (8)了

|、&运算符的两端都会执行的,而||当第一个条件为真时,后面的就不成执行,整个表达式就为真。&&:当第一个条件为假时,后面就不在执行,整个表达式就为假。
yugona 2004-04-09
  • 打赏
  • 举报
回复
记得不太清楚了

对于1:如果满足i<10继续验证methodB(4)
对于2:如果满足i<10则不再验证后面的

对于3:如果不满足i<10还继续验证methodB(4)
对于4:如果不满足i<10则不再验证methodB(4)
qnake 2004-04-09
  • 打赏
  • 举报
回复
谢谢你们,明白了。

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧