2016-06-14 4 views
2

В Java 8 я написал несколько примеров кода.В Java 8 '+' оператор для конкатенации заменен новым StringBuilder()

String s1 = "Hello"; 
String s2 = "world"; 
String s3 = s1 + s2; 

После декомпиляции .class файл я обнаружил, что третье заявление

String s3 = s1 + s2; 

заменен

String s3 = new StringBuilder(s1).append(s2).toString(); 

Означает ли это, что Существует больше не нужно использовать явное StringBuilder для оптимизации и просто используйте вместо оператора '+'?

+0

«Это означает, что больше не нужно использовать явный StringBuilder *» - Нет , javac использует его только в таких тривиальных случаях. В цикле вам все равно нужно использовать 'StringBuilder' самостоятельно. – maaartinus

+0

Да Правильно, я написал несколько примеров программы и декомпилировал ее и узнал, что в цикле нам нужен StringBuilder. – shubham12511

ответ

2

Да. На самом деле, эта оптимизация была выполнена на Java 6. См. «Думая на Java» Брюса Эккела 4-е издание pp.356-359 для деталей