该程序是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会有问题?
我不明白,如果
One
创建的实例,为什么会有问题。
因为One
包含一个assert
在实例化时肯定会失败的(并且这些选项会传入args
);0 != 1
在
class One {
int x = 0;
{
assert x == 1;
}
}
此外,B
未启用inG
断言,而in断言仅在类中启用Two
(而有问题的断言在class中One
)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句