为什么 &&、&、|| 的输出不同?

2024-03-17

这是代码段

你能解释一下为什么输出不同

1)

public static ShortCkt {
    public static void main(String args[]) {
        int i = 0;
        boolean t = true;
        boolean f = false, b;
        b = (t && ((i++) == 0));
        b = (f && ((i+=2) > 0));
        System.out.println(i);      
    }
}

本例中的输出为 1

2)

public static ShortCkt {
    public static void main(String args[]) {
        int i = 0;
        boolean t = true;
        boolean f = false, b;
        b = (t & ((i++) == 0));
        b = (f & ((i+=2) > 0));
        System.out.println(i);      
    }
}

本例中的输出为 3

3)

public static ShortCkt {
    public static void main(String args[]) {
        int i = 0;
        boolean t = true;
        boolean f = false, b;
        b = (t || ((i++) == 0));
        b = (f || ((i+=2) > 0));
        System.out.println(i);      
    }
}

本例中的输出为 2

4)

public static ShortCkt {
    public static void main(String args[]) {
        int i = 0;
        boolean t = true;
        boolean f = false, b;
        b = (t | ((i++) == 0));
        b = (f | ((i+=2) > 0));
        System.out.println(i);      
    }
}

本例中的输出为 3


为什么 &&、&、|| 的输出不同?

就像 C/C++ 中一样&&被“懒惰地”评估,而& is not.

If a那么是假的a && b将返回 false 甚至不评估b.

同样适用于a || b:如果第一个操作数,a为真,整个表达式为真,第二个操作数,b从未被评估。为了a | b然而,两者a and b将被评估。

如果使用时未评估操作数,则会产生后果&& (or ||)有副作用,如您的示例所示。


旁注:很少有 Java 程序员知道这一点^(xor) 也适用于布尔值。 (A^^版本不存在只是因为它是多余的。)

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

为什么 &&、&、|| 的输出不同? 的相关文章

  • 在不支持 CAS 操作的处理器上进行 CompareAndSet

    今天 我在一次采访中被问到下一个问题 如果您在具有不支持 CAS 操作的处理器的机器上调用 AtomicLong 的compareAndSet 方法 会发生什么情况 您能否帮我解决这个问题 并在可能的情况下提供一些全面描述的链接 From
  • 如何在 Android 应用程序中隐藏 Flutterwave API 密钥

    我正在构建一个 Android 应用程序 目前正在将 Flutterwave 集成到我的应用程序中以进行支付 建议我永远不要将 Flutterwave API 密钥放在我的应用程序上 那么我该如何隐藏这些键呢 我正在使用 Retrofit
  • 我对线程失去了理智

    我想要这个类的对象 public class Chromosome implements Runnable Comparable
  • Mockito 和 Hamcrest:如何验证 Collection 参数的调用?

    我遇到了 Mockito 和 Hamcrest 的泛型问题 请假设以下界面 public interface Service void perform Collection
  • 为什么在将 String 与 null 进行比较时会出现 NullPointerException?

    我的代码在以下行中出现空指针异常 if stringVariable equals null 在此语句之前 我声明了 stringVariable 并将其设置为数据库字段 在这个声明中 我试图检测该字段是否有null值 但不幸的是它坏了 有
  • 为什么解析这个 JSON 会抛出错误?

    我正在尝试解析这个 JSONObject query yahoo count 1 results rate Name USD INR id USDINR Time 12 19pm Date 10 31 2015 Bid 65 405 Ask
  • 无需递归即可对可观察结果进行分页 - RxJava

    我有一个非常标准的 API 分页问题 您可以通过一些简单的递归来处理 这是一个捏造的例子 public Observable
  • 在java程序中使用c++ Dll

    我正在尝试使用System LoadLibrary 使用我用 C 编写的一个简单的 dll UseDllInJava java import com sun jna Library import com sun jna Native imp
  • 如何自定义舍入形式

    我的问题可能看起来很简单 但仍然无法得到有效的东西 我需要自定义 Math round 舍入格式或其他格式以使其工作如下 如果数字是 1 6 他应该四舍五入到 1 如果大于或等于 1 7 他应该四舍五入到 2 0 对于所有其他带有 6 的小
  • 使用 Proguard 通过 Dropbox.com 库混淆 Android 应用程序

    我刚刚创建了一个需要 Dropbox com API 库的 Android 应用程序 我现在尝试在 发布 模式下构建应用程序 并希望在代码上运行混淆器以对其进行混淆 但是 每当我尝试运行 Proguard 时 都会收到以下错误 Progua
  • 数据库中的持久日期不等于检索日期

    我有一个具有 Date 属性的简单实体类 此属性对应于 MySQL 日期时间列 Entity public class Entity Column name start date Temporal TemporalType TIMESTAM
  • 类更改(例如字段添加或删除)是否保持 Serialized 的向后兼容性?

    我有一个关于 Java 序列化的问题 在这种情况下 您可能需要修改可序列化类并保持向后兼容性 我有丰富的 C 经验 所以请允许我将 Java 与 NET 进行比较 在我的Java场景中 我需要使用Java的运行时序列化机制序列化一个对象 并
  • 从三点求圆心的算法是什么?

    我在圆的圆周上有三个点 pt A A x A y pt B B x B y pt C C x C y 如何计算圆心 在Processing Java 中实现它 我找到了答案并实施了一个可行的解决方案 pt circleCenter pt A
  • 文本视图不显示全文

    我正在使用 TableLayout 和 TableRow 创建一个简单的布局 其中包含两个 TextView 这是代码的一部分
  • Spring Data Rest 多对多 POST

    首先 让我解释一下我的用例 这非常简单 有一个用户实体和一个服务实体 我使用 UserService 作为连接实体 连接表 在用户和服务之间建立多对多关联最初 会有一些用户集和一些服务集 用户可以在任何时间点订阅任何服务 在这种情况下 将向
  • 在 Java 中通过 D-Bus MPRIS 访问 Clementine 实例

    我使用 Clementine 作为音乐播放器 它可以通过 D Bus 命令进行控制 在命令行上 使用 qdbus 我可以 Start Stop 暂停播放器 强制它跳过播放列表中的歌曲 检查播放列表的长度 检查播放列表中当前播放的曲目及其元数
  • Android ScrollView,检查当前是否滚动

    有没有办法检查标准 ScrollView 当前是否正在滚动 方向是向上还是向下并不重要 我只需要检查它当前是否正在滚动 ScrollView当前形式不提供用于检测滚动事件的回调 有两种解决方法可用 1 Use a ListView并实施On
  • 确定 JavaFX 中是否消耗了事件

    我正在尝试使用 JavaFX 中的事件处理来做一些非滑雪道的事情 我需要能够确定手动触发事件后是否已消耗该事件 在以下示例中 正确接收了合成鼠标事件 但调用 Consumer 不会更新该事件 我对此进行了调试 发现 JavaFX 实际上创建
  • 使用 DBCP 配置 Tomcat

    在闲置一段时间 几个小时 后 我们收到了 CommunicationsException 来自 DBCP 错误消息 在异常中 位于这个问题的末尾 但我没有看到任何配置文件中定义的 wait timeout 我们应该看哪里 在 tomcat
  • 关闭扫描仪是否会影响性能

    我正在解决一个竞争问题 在问题中 我正在使用扫描仪获取用户输入 这是 2 个代码段 一个关闭扫描器 一个不关闭扫描器 关闭扫描仪 import java util Scanner public class JImSelection publ

随机推荐

  • Web API 2 中的版本控制

    有一个关于 Web Api 2 0 版本控制的快速问题 我开发了一个完全 RESTful API 但是我有 2 个同名的控制器 我已根据单独的文件夹将它们放入不同的命名空间中 例如 v1 和 v2 文件夹 我还使用正常的 Namespace
  • 如何将字典列表合并为单个字典?

    我怎样才能把字典列表变成这样 a 1 b 2 c 1 d 2 变成一个像这样的字典 a 1 b 2 c 1 d 2 Answers here will overwrite keys that match between two of the
  • 在多对多连接的位置进行序列化

    我希望有人能帮助我 我正在使用 Express js 的 Sequelize ORM 并且在 2 个表之间建立了有效的多对多关系 为了简化我的查询 让我们假装我的表是 Users Books 和 UserBooks 其中 UserBooks
  • 基于Cloud pub/sub队列自动扩展GCE实例组

    GCE 实例组可以根据 Google Cloud PubSub 队列计数或其他异步任务队列 例如 PSQ 扩大 缩小规模吗 Yes 该功能现在处于 alpha 阶段 https cloud google com compute docs a
  • 在块内循环以错误的顺序附加到数组 - Swift 2.0

    我从 Parse 下载了一个 PFFile 数组 我试图将它们转换为 NSData imageDataArray 数组 以便将它们保存到 Core Data 中 我现在遇到的唯一问题是 imageDataArray 的元素添加顺序错误 这意
  • Haskell 堆栈与全局 ghc

    是否可以使用stack已经安装了ghc没有stack安装本地副本ghc or cabal 是的 如果ghc in PATH是所选快照的正确版本 stack会很高兴地使用它 ghc version The Glorious Glasgow H
  • 用于验证管道分隔项目数量的正则表达式

    我有一个字符串 它是管道 划定的 我需要一个正则表达式来根据管道字符验证项目数量 因此 正则表达式将执行以下操作 如果最大项目数为三 asdfasdf asdfasdf asdfasdf 有效 asdfasdf asdfasdf asdfa
  • 如何让wxpython密码textctrl显示字符?

    使用 wxPython 可以将密码字段创建为 wx TextCtrl frm 1 style wx TE PASSWORD 我想知道是否有一种方法可以动态地将这个密码字段更改为普通的文本控件 以便用户可以看到密码是什么 创建控件后无法更改样
  • 在 ScrollView 中使用 RecyclerView 并具有灵活的 Recycler 项目高度

    我想知道是否有任何可能的方法可以使用回收视图 在此之前 我使用 RecyclerView固定高度里面一个滚动视图但这次我不知道该物品的高度 Hint 在问这个问题之前 我阅读了堆栈问题上的所有问题和解决方案 update 一些解决方案展示了
  • 使用 Mercurial,如何记录具有跨分支祖先的分支?

    在 Mercurial 中 我想构建所有提交消息的更改日志以进行修订stable分支 目前 我正在使用 hg log r
  • 使用 v4l2loopback 和 EDSDK Liveview 进行佳能 DSLR 视频环回?

    我想使用 DSLR 相机作为视频输入 例如在 Linux 和 Android 下进行 Skype Google talk 是否可以使用 v4l2loopback 和 Canon EDSDK 创建视频环回 如何将实时取景缓冲区从摄像机传输到视
  • 为什么 DataContractSerializer 不支持属性?

    我根据客户的文档创建 xsd 并且所有 xsd 都有属性 我一直在使用 xsd exe 从 xsd 生成类 但我读到 DataContractSerializer 不支持属性 为什么不 这是否意味着我只能有一个只有元素的soap xml 文
  • 关于 TypeScript 的 noUnusedParameters 编译器选项的说明

    在 GitHub 上输入任何内容之前 我试图确定这实际上是否是一个错误 With noUnusedParameters启用后 TypeScript 编译器会出现如下错误 const foo one two three foo forEach
  • 生日显示为去年的年龄?

    我正在测试一个我想在其中使用它的网站的 JavaScript 片段 基本上 当页面加载我的年龄时执行的函数 我是在规定的出生日期之外做这件事的 我在使用birthDate变量时注意到一个错误 不确定为什么会发生 当birthDate月份比当
  • Doctrine ORM 内存问题

    问题 运行使用下面 Factory 类中的 Doctrine 的守护程序服务时 会出现内存问题 当守护进程服务启动时 它运行大约 175MB 一天后大约是 250MB 再过一天就达到 400MB 我正在寻找导致内存增加的原因以及如何降低内存
  • 将java库包含到自己的库中

    我为自己创建了一个小框架 我想在多个项目中使用它 我还希望分布式 jar 文件包含所有外部库 以便我的项目只需要包含我的库即可访问所有外部库 我需要这个来简化外部库的更新 所以我把它放在我的 build xml 中 它将 dist lib
  • 如何使用加特林检查 If 方法?

    记录在案here https gatling io docs current cheat sheet 加特林checkIf方法用于条件检查 它不可用于ScenarioBuilder的流畅 API 但我可以在CheckSupport班级 我在
  • 如何将在线 CSV 数据插入 SQL Server 数据库?

    我需要每天从在线可用的 csv 执行数据加载 例如http www supplier com products csv http www supplier com products csv一旦我将 csv 转储到 sql 表中 我就可以进行
  • 如何枚举es6类方法[重复]

    这个问题在这里已经有答案了 如何枚举 ES6 类的方法 如同Object keys 这是一个例子 class Callbacks method1 method2 const callbacks new Callbacks callbacks
  • 为什么 &&、&、|| 的输出不同?

    这是代码段 你能解释一下为什么输出不同 1 public static ShortCkt public static void main String args int i 0 boolean t true boolean f false