Я готовлюсь к экзамену 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)
или компилятора. Достаточно справедливо:)