Java SCJP断言语句
这个问题来自SCJP转储。也许这看起来很愚蠢,但我对选择有点困惑。请帮帮我 公共类驴2{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");
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)表示两种情况下都没有输出