Рубрики
Без рубрики

Java Преобразует целое число в строку

Автор оригинала: Vuk Skobalj.

Вступление

Преобразование примитива 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.