无法理解 java 断言机制
Could not understand java assert mechanism
这个程序是SCJP题集中的一道题
class One {
int x = 0;
{
assert x == 1;
}
}
public class Two {
public static void main(String[] args) {
int y = 0;
assert y == 0;
if(args.length > 0)
new One();
}
}
以下哪项 运行 不会出错?
给出的选项是
A. java Two
B. java Two x
C. java -ea Two
D. java -ea Two x
E. java -ea:One Two
F. java -ea:One Two x
G. java -ea:Two Two x
正确的选项是 A、B、C、E 和 G
D 和 F 不正确的原因是,创建了 One
的实例。我不明白为什么创建 One
的实例会出现问题。
在选项B和G中也创建了One
的实例,那为什么D和F有问题?
为了使断言能够执行任何操作,必须启用它。 A 和 B 根本没有启用断言。 G 只为 class Two
.
启用了它们
D 和 F 都为 class One
启用了断言并创建了一个实例。
I don't understand why it would be a problem if an instance of One
is created.
因为One
包含一个assert
,它在实例化时肯定会失败(并且那些选项在args
中传递); 0 != 1
在
class One {
int x = 0;
{
assert x == 1;
}
}
此外,在选项 B
中断言未启用,在选项 G
中断言仅在 class Two
中启用(有问题的断言在 class One
).
这个程序是SCJP题集中的一道题
class One {
int x = 0;
{
assert x == 1;
}
}
public class Two {
public static void main(String[] args) {
int y = 0;
assert y == 0;
if(args.length > 0)
new One();
}
}
以下哪项 运行 不会出错? 给出的选项是
A. java Two
B. java Two x
C. java -ea Two
D. java -ea Two x
E. java -ea:One Two
F. java -ea:One Two x
G. java -ea:Two Two x
正确的选项是 A、B、C、E 和 G
D 和 F 不正确的原因是,创建了 One
的实例。我不明白为什么创建 One
的实例会出现问题。
在选项B和G中也创建了One
的实例,那为什么D和F有问题?
为了使断言能够执行任何操作,必须启用它。 A 和 B 根本没有启用断言。 G 只为 class Two
.
D 和 F 都为 class One
启用了断言并创建了一个实例。
I don't understand why it would be a problem if an instance of
One
is created.
因为One
包含一个assert
,它在实例化时肯定会失败(并且那些选项在args
中传递); 0 != 1
在
class One {
int x = 0;
{
assert x == 1;
}
}
此外,在选项 B
中断言未启用,在选项 G
中断言仅在 class Two
中启用(有问题的断言在 class One
).