布尔运算符的差异:& 与 && 和 |与||

2024-02-04

我知道规则&& and ||但什么是& and |?请用例子向我解释这些。


这些是按位 AND 和按位 OR 运算符。

int a = 6; // 110
int b = 4; // 100

// Bitwise AND    

int c = a & b;
//   110
// & 100
// -----
//   100

// Bitwise OR

int d = a | b;
//   110
// | 100
// -----
//   110

System.out.println(c); // 4
System.out.println(d); // 6

感谢 Carlos 指出 Java 语言规范中的相应部分(15.22.1 https://docs.oracle.com/javase/specs/jls/se11/html/jls-15.html#jls-15.22.1, 15.22.2 https://docs.oracle.com/javase/specs/jls/se11/html/jls-15.html#jls-15.22.2)关于操作员基于其输入的不同行为。

事实上,当两个输入都是布尔值时,运算符被视为布尔逻辑运算符,其行为类似于条件与 (&&) 和条件或 (||) 运算符,除了它们不会短路这一事实,因此虽然以下是安全的:

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

这不是:

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

“短路”意味着操作员不必检查所有情况。在上面的例子中,&&仅当以下情况时才会检查第二个条件a is not null(否则整个语句将返回 false,并且无论如何检查以下条件都是没有意义的),所以语句a.something不会引发异常,或者被认为是“安全的”。

The &运算符始终检查子句中的每个条件,因此在上面的示例中,a.something可以在以下情况下进行评估:a实际上是一个null值,引发异常。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

布尔运算符的差异:& 与 && 和 |与|| 的相关文章

随机推荐

  • 同一表达式中多个参数包的多次展开

    我想问一下下面的代码是否有效 我想知道是否有可能在一个表达式中多次扩展参数包 include
  • 自动调整 UITableViewCell 的两列大小

    我有一个 UITableViewCell 其中有两列 每列都是一个 UILabel 每个标签都是多行 numberOfLines 0 我想要的是根据较高的标签来垂直调整表格视图单元格的大小 我为每个标签的左右和顶部设置了约束 但我不确定如何
  • 基本简单 Asp.net + jQuery + JSON 示例

    我正在尝试学习如何从 Javascript jQuery 对服务器进行简单的调用 我一直在努力学习 但找不到包含这些简单步骤的教程 我想用两个参数 一个日期时间和一个字符串 向服务器发送一条消息并返回一个日期时间 我想通过 JSON 来做到
  • Win32 安装程序:有没有办法为每个用户写入 HKU 启动?

    是否有一个 Windows 安装程序可以为每个用户添加启动项 例如
  • Android自定义圆形ProgressBar方向

    我有一个自定义的圆形进度条 这是我确定的可绘制对象
  • 如何让这个java动画流畅呢?

    我需要用我的框架及其内部面板进行动画运动 当用户单击特定的内部面板 框架内部的面板 时 另一个面板将添加到框架的contentPane然后框架和新面板的宽度都会增加 但我总是希望我的框架位于屏幕中间 我用这种方式解决了动画 Containe
  • 摆脱WPF中的按钮边框?

    i am trying to get rid of button border and only display text however a thin line around the text gets displayed even th
  • 如何从下拉列表中传递选定的值并将其作为 Rails 中级联下拉列表的参数进行访问

    Edited 我正在尝试实现级联下拉菜单 在我的第一个下拉列表中 我得到了所有不同的名称 选择名称时 如何访问该值并将其传递给控制器 模型 以便我可以根据值进行过滤并将其绑定到下一个下拉列表 在我的模型中 我有以下范围 scope dist
  • 仅使用辅助全局索引查询 Dynamodb 表

    我尝试使用辅助全局索引查询 Dynamodb 表 但收到 java lang IllegalArgumentException 非法查询表达式 在查询中找不到哈希键条件 我想做的就是获取时间戳大于某个值的所有项目 而不考虑密钥 时间戳不是键
  • JavaScript 正弦波

    track function x y top ampl return top top 2 x x ampl Math sin top 20 y top this screenHeight lt 0 65 y 2 1 y ampl Math
  • 多级视图:expandablelistview

    我正在尝试编写多级树 我确实看过expandablelistview 但它只支持两个级别 我确实查看了其他问题 SO 和帖子 我发现的最有希望的帖子是http mylifewithandroid blogspot com 2011 02 3
  • Py2Exe,[Errno 2]没有这样的文件或目录:'numpy-atlas.dll'

    我在我的程序中包含了 matplotlib 我在谷歌上搜索了 numpy atlas dll 我似乎是地球上唯一遇到这个问题的人 setup py from setuptools import setup import py2exe set
  • 二维中两个向量的平分线(可能共线)

    一般如何找到两个向量的二等分 b bx by 我们考虑两个非零向量 u ux uy v vx vy 可能是共线的 对于非共线向量我们可以写 bx ux u vx v by uy u vy v 但对于共线向量 bx by 0 Example
  • WPF TreeView SelectedItemChanged 未触发

    我正在尝试创建一个 TreeView 它允许用户重命名 TreeView 中的节点 该树表示 HL7 消息 并按从段到子组件的层次结构进行构建 例如 PID PID 1 PID 2 etc 我需要允许用户选择一个节点 按 F2 将节点置于编
  • getMethod("summary",signature = "FitDiff") 中的错误

    我正在使用比较 lavaan 对象semTools compareFit 它抛出一条非常奇怪的错误消息 我还尝试了以下可重现的示例 data HolzingerSwineford1939 package lavaan HS modelA l
  • 使用 jQuery 检测首页加载?

    我需要检测 jQuery 中页面的首次加载 以便仅在用户第一次导航到该页面时加载页面时才能执行某些操作 类似于服务器端代码页 ispostbasck 我已经测试了 document ready 每次页面加载时它都会触发 因此这不会提供我需要
  • JOOQ Oracle 数字精度和 Java 数字映射

    谁能告诉我或提供关于 oracle 数字精度和 java 类型之间映射的参考 即数字 x 在什么时候映射到短整型 整型 长型 BigInteger 等 Java 整数类型与 Oracle 并不完美匹配NUMBER类型 本质上 有两种方法可以
  • 为什么选择 Phing/Ant 而不是 Bash 和 Make? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我一直在工作中使用 Phing 它是我到达那里时设置的 并考虑将它用于一些个人项目 我还没有弄清楚的一件事是最大的吸引力是什么 Phing 或
  • Swift - Google 地图更新当前位置的路线

    我目前正在学习 Swift 的 Google Maps API 因此我有几个问题希望你们能回答 碰巧我正在尝试创建一个简单地为用户提供方向的应用程序 就像苹果地图和谷歌地图一样 它只是为用户绘制一条方向路线 我已经成功地完成了这项工作 但我
  • 布尔运算符的差异:& 与 && 和 |与||

    我知道规则 and 但什么是 and 请用例子向我解释这些 这些是按位 AND 和按位 OR 运算符 int a 6 110 int b 4 100 Bitwise AND int c a b 110 100 100 Bitwise OR