Вступление
Преобразование примитива int
или соответствующего класса-оболочки Integer
в Строку
является обычной и простой операцией. То же самое относится и к обратному способу преобразования строки в целое число .
Преобразование целого числа в строку
При преобразовании int или целого числа в строку существует четыре подхода. Класс String
предоставляет несколько методов – valueOf()
и format()
для этой цели, хотя уже упомянутый класс Integer
также предлагает метод toString ()
, который решает эту проблему. Кроме того, вы также можете полагаться на метод StringBuilder
‘s append ()
, хотя это не часто используемый сценарий:
String.valueOf(int i)
– Этот подход считается лучшей практикой из-за простоты. Этот метод также принимает другие типы –логический
,символ
,символ[]
,двойной
,плавающий
,длинный
,Объект
Integer.toString(int i)
– Этот подход старшезначения()
и просто использует метод, который каждый объект Java должен возвращать строку, представляющую данный int. Этот подход, в отличие от предыдущего, может возвращать исключениеNullPointerException
хотя.String.формат(Формат строки, Объект... аргументы)
– Возвращает строку, отформатированную в соответствии со спецификатором формата, и следующие аргументыStringBuilder.добавить(int i).toString()
– Так же, как и методvalueOf ()
, этот метод принимает все примитивные типы с добавлением некоторых других типов, таких какString
,StringBuffer
иПоследовательность символов
.
Строка.Значение()
Метод valueOf()
является статическим методом класса String, который возвращает строковое представление указанного типа.
Здесь разрешено много типов:
- Объект
- шар[]
- логический
- обуглить
- инт
- длинный
- плыть
- двойной
Но в этом уроке мы сосредоточимся на int
. Возвращаемое представление точно соответствует представлению, возвращаемому Integer.toString()
при передаче того же аргумента:
int i = 12345; String string = String.valueOf(i); String otherString = Integer.toString(i); System.out.println(string.equals(otherString)); System.out.println(string == otherString); System.out.println(string); System.out.println(otherString);
Запуск этого фрагмента кода приведет к:
true false 12345 12345
Это имеет смысл, поскольку оба этих метода возвращают новую строку. Метод equals()
возвращает true, потому что их значение одинаково, тогда как ==
возвращает false, поскольку их ссылочные переменные не указывают на один и тот же объект в памяти.
Использование valueOf()
обеспечивает согласованность кода при преобразовании одного типа данных в другой. В случае целого числа значение метода()
также может кэшировать часто используемые числа, например, от -127 до 128, чтобы ускорить преобразование и уменьшить объем памяти.
Из-за этого рекомендуется использовать метод valueOf()
как для преобразования строк, так и целых чисел.
Целое число.toString()
Этот подход использует один из наиболее распространенных методов Java – toString()
общий для всех объектов.
Этот метод имеет множество применений и требует подробного объяснения. Если вы хотите прочитать об этом больше, у нас уже есть отличная статья, посвященная этому!
В этом случае метод возвращает строковый объект, представляющий указанное значение int. Аргумент преобразуется в десятичное представление со знаком и возвращается в виде строки:
int i = 12345; String string = Integer.toString(i); String otherString = new Integer(i).toString(); System.out.println(string.equals(otherString)); System.out.println(string == otherString); System.out.println(string); System.out.println(otherString);
Запуск этого фрагмента кода приведет к:
true false 12345 12345
Если ваша переменная имеет примитивный тип (int), лучше использовать Integer.toString(int)
или String.valueOf(int)
. Но если ваша переменная уже является экземпляром Integer
(класс-оболочка примитивного типа int), лучше просто вызвать ее метод toString ()
, как показано выше.
Строка.формат()
Возвращает строку, отформатированную в соответствии со спецификатором формата и следующими аргументами. Хотя целью этого метода является не совсем преобразование, а скорее форматирование строки, его также можно использовать для преобразования.
Существует довольно много спецификаторов на выбор:
%a
– Шестнадцатеричный вывод числа с плавающей запятой%b
– верно, если не равно нулю, ложно, если равно нулю%c
– символ Юникода%d
– Десятичное целое число%e
– Научное обозначение десятичного целого числа%f
– Десятичное число с плавающей запятой%g
– То же, что и выше, но, возможно, научное, в зависимости от значения%h
– Шестнадцатеричная строка Хэш-кода() возвращаемое значение%n
– Разделитель строк%o
– Восьмеричное целое число%s
– Строка%t
– Преобразование даты/времени%x
– Шестнадцатеричная строка
В этом уроке мы сосредоточимся на %d
:
int i = 12345; String string = String.format("%d", i); System.out.println(string);
Запуск этого фрагмента кода приведет к:
12345
Git Essentials
Ознакомьтесь с этим практическим руководством по изучению Git, содержащим лучшие практики и принятые в отрасли стандарты. Прекратите гуглить команды Git и на самом деле изучите это!
Метод format()
вызывает исключение IllegalFormatConversionException
, если вы передаете несовместимый тип, например, передаете Целое число
для спецификатора %s
, который ожидает строковый объект.
Некоторые из наиболее распространенных спецификаторов: %s
для строки, %d
для десятичного целого числа и %n
.
Строковый конструктор и строковый буферизатор
Оба StringBuffer
и StringBuilder
являются классами, используемыми для объединения нескольких значений в одну строку.
StringBuffer
потокобезопасен, но медленнее, тогда как StringBuilder
не потокобезопасен, но быстрее.
int i = 12345; String string = new StringBuilder().append(i).toString(); String otherString = new StringBuffer().append(i).toString(); System.out.println(string.equals(otherString)); System.out.println(string == otherString); System.out.println(string); System.out.println(otherString);
Запуск этого фрагмента кода приведет к:
true false 12345 12345
Вывод
Мы рассмотрели одну из фундаментальных тем Java и общих проблем, с которыми сталкиваются разработчики, – преобразование int или целого числа в строку с помощью инструментов, поставляемых с JDK.