Я работаю над проектом, в котором все преобразования из int в String выполняются следующим образом:
inti=5; StringstrI="" + i;
Я не знаком с Java.
Это обычная практика или что-то не так, как я полагаю?
Переведено автоматически
Ответ 1
Обычными способами были бы Integer.toString(i) или String.valueOf(i).
Конкатенация будет работать, но она нетрадиционна и может иметь неприятный запах, поскольку предполагает, что автор не знает о двух вышеперечисленных методах (чего еще они могут не знать?).
Java имеет специальную поддержку оператора + при использовании со строками (см. Документацию), который преобразует опубликованный вами код в:
во время компиляции. Это немного менее эффективно (sb.append() завершается вызовом Integer.getChars(), что Integer.toString() было бы сделано в любом случае), но это работает.
Чтобы ответить на комментарий Гродригеса: ** Нет, компилятор не оптимизирует пустую строку в этом случае - посмотрите:
Есть предложение и текущая работа по изменению этого поведения, ориентированная на JDK 9.
Ответ 2
Это приемлемо, но я никогда не писал ничего подобного. Я бы предпочел это:
StringstrI= Integer.toString(i);
Ответ 3
Это не очень хороший способ.
При выполнении преобразования из int в string следует использовать это:
inti=5; StringstrI= String.valueOf(i);
Ответ 4
Дело не только в оптимизации1. Мне не нравится
"" + i
потому что это не выражает то, что я действительно хочу сделать 2.
Я не хочу добавлять целое число к (пустой) строке. Я хочу преобразовать целое число в string:
Integer.toString(i)
Или, не мой предпочтительный вариант, но все же лучше, чем конкатенация, получить строковое представление объекта (целое число):
String.valueOf(i)
1. Для кода, который вызывается очень часто, например, в циклах, оптимизация, несомненно, также является причиной отказа от использования конкатенации.
2. это недопустимо для использования реальной конкатенации, такой как вSystem.out.println("Index: " + i);илиString id = "ID" + i;