Когда объявлен String Builder vs String - PullRequest
0 голосов
/ 07 августа 2020

Когда ты так поступаешь. Созданы ли экземпляры?

String string = "a"+"b"+"c";

Следует ли это объявлять, как показано ниже?

StringBuilder sBuilder = new StringBuilder();
sBuilder.append("a");
sBuilder.append("b");
sBuilder.append("c");

1 Ответ

1 голос
/ 07 августа 2020

Для

String string = "a"+"b"+"c";

Компилятор генерирует полную строку. Байт-код выглядит так. Большинство компиляторов поступят именно так, поскольку они работают с константами. Объединение переменных может обрабатываться по-разному в зависимости от версии JDK.

  0  ldc <String "abc"> [16]
  2  astore_1 [string]

Таким образом, следующее будет ненужными накладными расходами.

StringBuilder sBuilder = new StringBuilder();
sBuilder.append("a");
sBuilder.append("b");
sBuilder.append("c");

Однако, если вам когда-нибудь понадобится вызвать append on тот же объект StringBuilder, вы можете сделать следующее:

StringBuilder sBuilder = new StringBuilder();
sBuilder.append("a").append("b").append("c");

StringBuilder.append возвращает собственный экземпляр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...