You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OCA8 Java认证真题:Java运算符短路特性相关问题求解

题目考点说明

本题核心考察Java中按位逻辑运算符和短路逻辑运算符的执行差异,是OCA8认证的高频考点。

核心规则先明确
  • 无短路的运算符:&(按位与)、|(按位或):无论左侧操作数是否能确定整个表达式的最终结果,都会强制执行右侧的所有表达式
  • 有短路的运算符:&&(短路与)、||(短路或):只要左侧操作数已经可以确定整个表达式的结果,就会直接跳过右侧表达式的执行
逐行代码执行逻辑分析

我们依次看标注的4行赋值语句:

  1. 第1行代码:bool = (bool2 & method1("1"));

此处用的是无短路的&运算符,即使左侧bool2的值已经是false(与运算只要有一个false结果必为false),仍然会执行右侧的method1("1"),所以控制台会打印1,最终表达式结果为false & true = false赋值给bool。

  1. 第2行代码:bool = (bool2 && method1("2"));

此处用的是有短路的&&运算符,左侧bool2为false已经能确定整个与运算的结果为false,所以直接短路跳过右侧method1("2")的执行,不会打印2。

  1. 第3行代码:bool = (bool1 | method1("3"));

此处用的是无短路的|运算符,即使左侧bool1的值已经是true(或运算只要有一个true结果必为true),仍然会执行右侧的method1("3"),所以控制台会打印3,最终表达式结果为true | true = true赋值给bool。

  1. 第4行代码:bool = (bool1 || method1("4"));

此处用的是有短路的||运算符,左侧bool1为true已经能确定整个或运算的结果为true,所以直接短路跳过右侧method1("4")的执行,不会打印4。

最终输出结论

综合以上执行逻辑,程序只会打印1和3,和参考答案一致。

内容的提问来源于stack exchange,提问作者Sri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 03:57:05