Как преобразовать int в String?
Я работаю над проектом, где все преобразования типа int
в String
выполняются следующим образом:
int i = 5;
String strI = "" + i;
Я не знаком с Java.
Является ли это обычной практикой или что-то здесь не так, как я предполагаю?
5 ответ(ов)
Это допустимо, но я никогда не писал ничего подобного. Я бы предпочел следующий вариант:
String strI = Integer.toString(i);
Это не лучший способ.
При преобразовании из int
в String
следует использовать следующий подход:
int i = 5;
String strI = String.valueOf(i);
Это не только оптимизация1. Мне не нравится использование
"" + i
потому что это не отражает того, что я действительно хочу сделать2.
Я не хочу просто добавлять целое число к (пустой) строке. Я хочу преобразовать целое число в строку:
Integer.toString(i)
Или, пусть это не самый предпочтительный вариант, но все же лучше, чем конкатенация, получить строковое представление объекта (целого числа):
String.valueOf(i)
1. Для кода, который вызывается очень часто, например, в циклах, оптимизация действительно является одним из аргументов против использования конкатенации.
2. Это не относится к реальному случаю конкатенации, как в* System.out.println("Индекс: " + i);
или String id = "ID" + i;
Много вводных курсов в университетах, похоже, обучают этому стилю по двум причинам (по моему опыту):
- Это не требует понимания классов или методов. Обычно это преподается до того, как студентам когда-либо упоминают слово "класс" – не говоря уже о вызовах методов. Поэтому использование чего-то вроде
String.valueOf(…)
может запутать студентов. - Это иллюстрирует "перегрузку операторов" – на самом деле, нам это продавали как идеоматический перегруженный оператор (неудивительно, учитывая, что Java не позволяет создавать собственную перегрузку операторов).
Поэтому это может быть либо вызвано дидактической необходимостью (х hoewel я бы заявил, что это просто плохое преподавание), либо использоваться для иллюстрации принципа, который в противном случае довольно трудно продемонстрировать в Java.
Лично я не вижу ничего плохого в этом коде.
Это довольно полезно, когда вам нужно вывести в лог целочисленное значение, а логгер принимает только строку. Я бы сказал, что такая конверсия удобна, когда вам нужно вызвать метод, принимающий строку, но у вас есть значение типа int.
Что касается выбора между Integer.toString
и String.valueOf
, это всего лишь вопрос личных предпочтений.
...И кстати, внутренне String.valueOf
вызывает метод Integer.toString
. 😃
Как преобразовать строку в int в Java?
Как преобразовать строку в InputStream в Java?
Как преобразовать символ в строку?
Как разделить строку в Java?
Как сгенерировать случайную алфавитно-цифровую строку