2015-05-16 12 views
0
public class NewClass { 

    public String makinStrings() { 
     String s = "Fred"; 
     s = s + "47"; 
     s = s.substring(2, 5); 
     s = s.toUpperCase(); 
     return s.toString(); 
    } 
} 

Сколько объектов создано в вышеуказанной программе? Я вижу как 4 объекта после преобразования в верхнюю строчку, но ответ 3 согласно книге scjp. Я не понимаю, почему только 3 объектыОбъекты в String постоянный бассейн в java

+4

Пожалуйста, обратитесь к любому из 750 "сколько строк создаются этим кодом" вопросы здесь о SO. У некоторых из них есть ** очень подробное описание того, что происходит, последнее, что нам нужно, еще одно. –

+0

@RealSkeptic, я стою исправлено. –

ответ

-1

Да 3 объектов

String s = "Fred";    // created in pool 
    s = s + "47";     // created in heap 
    s = s.substring(2, 5);   // created in heap 
    s = s.toUpperCase();   // created in heap 

Если вы видите источник substring() и toUpperCase() она возвращает новую строку и s + "47"; поскольку значение s определяется во время выполнения его willl создаст новую строку, в общей сложности 3 объекта.

+0

Может кто-нибудь объяснить мне причину падения? я ничего не сказал – codegasmer

+0

жаль, что мне пришлось удалить его в качестве ответа из-за downvotes, и это заставило меня подумать, что может быть ваш ответ неправильный. Да, даже я бы хотел, чтобы люди комментировали вместо того, чтобы просто голосовать, когда я уже принял его в качестве ответа. –

0
  1. s = "Fred"
  2. s = s+47; =>s = Fred47
  3. s = s.substring(2,5); =>s = ed4
  4. s = s.toUpperCase(); =>s = ED4
+0

@Aniket: Я понял то же самое, и он добавляет до 4 объектов, но ответ создается только 3 объекта и вы отправили то же самое –