Разница между Long.toString (i) и i + "" - PullRequest
4 голосов
/ 11 октября 2011

мы часто сталкиваемся со сценарием, в котором нам нужно передать строковое представление примитива, и чаще всего мы не используем

  WrapperClass.toString() ;

и иногда мы обычно пишем

  i + "";

если мы проверяем реализацию toString любого класса-оболочки, он создает новый объект String каждый раз, когда мы его вызываем. и то же самое также верно для примитива + "" (поскольку конкатенация во время выполнения создаст новый объект String)

Значит, между ними есть какая-то разница или это просто альтернативные способы преобразования примитива в объект String;

Ответы [ 3 ]

7 голосов
/ 11 октября 2011

Лично мне нравится String.valueOf(i):

  • Вы можете использовать его со всеми типами (даже не примитивными)
  • Это безопасно для нуля (при условии, что вы удовлетворены строковым значением "null" при преобразовании значения null)
  • Он выражает ваше намерение гораздо лучше, чем "" + i - этот код выражает конкатенацию строк, а это совсем не то, что вам нужно.
5 голосов
/ 11 октября 2011

Благие намерения.

Написание i + "";, вы, возможно, оставляете это на усмотрение будущего разработчика вашего кода (который вполне может быть вами), чтобы выяснить, каким будет этот вывод.

WrapperClass.toString(); является более явным и, хотя и более многословным, его намерения более ясны.Кроме того, слабая типизация - это не то, что вы обычно видите в Java, поэтому я советую вам заняться написанием идиоматического кода Java.

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

Итак, в конце концов, это вопрос стиля, хотя я бы предложил использовать более подробную версию вашего кода.

3 голосов
/ 11 октября 2011

Функционально они одинаковы.Разница в том, что i + ""; в основном использует побочный эффект для архивирования своего предназначения, что может усложнить понимание для начинающих.

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