栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java布尔运算符的区别:&vs &&和| vs ||

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java布尔运算符的区别:&vs &&和| vs ||

这些是按位与和按位或运算符。

int a = 6; // 110int b = 4; // 100// Bitwise AND    int c = a & b;//   110// & 100// -----//   100// Bitwise ORint d = a | b;//   110// | 100// -----//   110System.out.println(c); // 4System.out.println(d); // 6

感谢卡洛斯指出在Java语言规范中相应的部分(15.22.1,15.22.2关于基于其输入操作者的不同的行为)。

的确,当两个输入均为布尔值时,这些运算符被视为布尔逻辑运算符,并且其行为类似于

Conditional-And(&&)
Conditional-Or(||)
运算符,但它们不会短路,因此以下操作是安全的:

if((a != null) && (a.something == 3)){}

这不是:

if((a != null) & (a.something == 3)){}

“短路”是指操作员不必检查所有条件。在上述示例中,&&仅在a不存在时检查第二个条件null(否则整个语句将返回

false
,无论如何都应检查以下条件),因此的语句a.something不会引发异常,或者被认为是“安全的” 。”

&
操作者始终检查子句中的每个状态,所以在上述例子中,
a.something
也可以当被评估a事实上是一个
null
值,产生一个异常。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/420289.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号