7

Как преобразовать int в String?

1

Я работаю над проектом, где все преобразования типа int в String выполняются следующим образом:

int i = 5;
String strI = "" + i;

Я не знаком с Java.

Является ли это обычной практикой или что-то здесь не так, как я предполагаю?

5 ответ(ов)

2

Это допустимо, но я никогда не писал ничего подобного. Я бы предпочел следующий вариант:

String strI = Integer.toString(i);
1

Это не лучший способ.

При преобразовании из int в String следует использовать следующий подход:

int i = 5;
String strI = String.valueOf(i);
0

Это не только оптимизация1. Мне не нравится использование

"" + i

потому что это не отражает того, что я действительно хочу сделать2.

Я не хочу просто добавлять целое число к (пустой) строке. Я хочу преобразовать целое число в строку:

Integer.toString(i)

Или, пусть это не самый предпочтительный вариант, но все же лучше, чем конкатенация, получить строковое представление объекта (целого числа):

String.valueOf(i)

1. Для кода, который вызывается очень часто, например, в циклах, оптимизация действительно является одним из аргументов против использования конкатенации.

2. Это не относится к реальному случаю конкатенации, как в* System.out.println("Индекс: " + i); или String id = "ID" + i;

0

Много вводных курсов в университетах, похоже, обучают этому стилю по двум причинам (по моему опыту):

  • Это не требует понимания классов или методов. Обычно это преподается до того, как студентам когда-либо упоминают слово "класс" – не говоря уже о вызовах методов. Поэтому использование чего-то вроде String.valueOf(…) может запутать студентов.
  • Это иллюстрирует "перегрузку операторов" – на самом деле, нам это продавали как идеоматический перегруженный оператор (неудивительно, учитывая, что Java не позволяет создавать собственную перегрузку операторов).

Поэтому это может быть либо вызвано дидактической необходимостью (х hoewel я бы заявил, что это просто плохое преподавание), либо использоваться для иллюстрации принципа, который в противном случае довольно трудно продемонстрировать в Java.

0

Лично я не вижу ничего плохого в этом коде.

Это довольно полезно, когда вам нужно вывести в лог целочисленное значение, а логгер принимает только строку. Я бы сказал, что такая конверсия удобна, когда вам нужно вызвать метод, принимающий строку, но у вас есть значение типа int.

Что касается выбора между Integer.toString и String.valueOf, это всего лишь вопрос личных предпочтений.

...И кстати, внутренне String.valueOf вызывает метод Integer.toString. 😃

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь