我正在准备 OCA SE 7 考试,其中一些问题确实(!)棘手。
在我使用的其中一本书中,我发现了一个错误,所以我想确认以下内容...
public static void main(String... args) {
String autumn = new String("autumn"); // line one
System.out.println("autumn" == "summer"); // line two
}
方法执行后,池中有println
多少对象?String
我的理解是: - 第一行没有将字符串添加到池中 - 第二行创建“秋天”和“夏天”并将它们添加到池中所以书中的正确答案是 2。
但是,我也认为...因为我应该对考试问题偏执...字符串“false”也被创建并添加到池中...所以我认为 3 应该是正确答案...还是会发生其他一些黑魔法,例如...“true”和“false”已经被JVM默认放入池中或其他什么?...
有人可以确认吗?
编辑:经过一些研究,我发现在书中谈论“错误”是不公平的;作为一般提示:考试问题通常根据“以下代码”制定;所以他们显然对代码本身在本地做什么的简单旧的简单计算很感兴趣。因此,范围因此不允许检查println(boolean b)
实现或编译器优化。很公平 :)