Java SCJP断言语句

Java SCJP断言语句,java,scjp,Java,Scjp,这个问题来自SCJP转储。也许这看起来很愚蠢,但我对选择有点困惑。请帮帮我 公共类驴2{ public static void main(String[] args) { boolean assertsOn = true; assert (assertsOn) : assertsOn = true; if(assertsOn) { System.out.println("assert is on");

这个问题来自SCJP转储。也许这看起来很愚蠢,但我对选择有点困惑。请帮帮我

公共类驴2{

   public static void main(String[] args) {

    boolean assertsOn = true;

    assert (assertsOn) : assertsOn = true;

           if(assertsOn) {

                     System.out.println("assert is on");

                         }

          }
}

如果类驴子被调用了两次,第一次没有启用断言,第二次使用断言 启用断言后,结果如何

A.没有产出

B.没有产出;断言已打开

断言是开着的

D.没有产出;抛出断言错误

E.断言是开启的;抛出断言错误

回答)如果我调用它两次,我将得到 断言已打开 断言已打开

这是真的吗

书上说答案是C),但我想应该是两次,即断言是开启的;assert在这两种情况下都处于启用状态

如果该值为true,则不会采取进一步的操作,并且断言 语句正常完成

如果该值为false,则执行行为取决于 表达式2存在:

  • 如果表达式2存在,则对其进行计算

    • 如果求值由于某种原因突然完成,assert语句也会因为同样的原因突然完成

    • 如果评估正常完成,则将创建一个AssertionError实例,其“detail message”是Expression2的结果值 创造

    • 如果实例创建由于某种原因突然完成,那么assert语句也会因为同样的原因突然完成

    • 如果实例创建正常完成,则assert语句会通过抛出新创建的AssertionError突然完成 反对

如果禁用断言,则跳过
assert
assertsOn
true
,因此执行
If

如果启用断言,则执行
assert
assertsOn
true
,因此断言通过
assertsOn
true
,因此执行
if

答案就是你所说的

assert is on ; assert is on

可能有一些内容您没有告诉/向我们展示,或者提供的答案缺少正确的答案。

运行时发生了什么?现在我没有一个编译器来启用和禁用断言。这纯粹是主观的,但(C)意味着两个选项都会打印“assert is on”,因为如果您查看选项(a、B、C、D、E)两个选项仅适用于具有不同选项的选项。类似地,选项(A)表示两种情况下都没有输出