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

Введение Преобразование примитива типа int или соответствующего ему класса оболочки Integer в String - обычная и простая операция. То же самое касается и другого способа преобразования String в Integer [/ java-convert-string-to-integer]. Преобразование целого числа в строку При преобразовании целого числа или целого числа в строку существует четыре подхода. Класс String предоставляет для этой цели несколько методов - valueOf () и format (), хотя уже упомянутый класс Integer также предлагает toString

Вступление

Преобразование примитива int или соответствующего ему класса оболочки Integer в String - обычная и простая операция. То же самое касается и другого способа преобразования String в Integer .

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

При преобразовании int или Integer в String существует четыре подхода. Класс String предоставляет для этой цели несколько методов - valueOf() и format() , хотя уже упомянутый Integer также предлагает toString() который решает эту проблему. Кроме того, вы также можете рассчитывать на StringBuilder «s append() метод, хотя это не часто используется сценарий:

  • String.valueOf(int i) - этот подход считается лучшей практикой из-за простоты. Этот метод также принимает другие типы - boolean , char , char[] , double , float , long , Object
  • Integer.toString(int i) - этот подход старше, чем valueOf() и просто использует метод, который каждый объект Java должен возвращать String, представляющий данный int. Однако этот подход, в отличие от предыдущего, может возвращать NullPointerException .
  • String.format(String format, Object... args) - возвращает строку, отформатированную в соответствии со спецификатором формата и следующими аргументами.
  • StringBuilder.append(int i).toString() - То же, что valueOf() метод, этот метод принимает все примитивные типы с добавлением некоторых других типов , таких как String , StringBuffer и CharSequence .

String.valueOf ()

Метод valueOf() - это статический метод класса String, который возвращает строковое представление указанного типа.

Здесь разрешено много типов:

  • Объект
  • char []
  • логический
  • символ
  • int
  • длинный
  • плавать
  • двойной

Но в этом уроке мы сосредоточимся на 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() обеспечивает согласованность вашего кода при преобразовании одного типа данных в другой. В случае valueOf() также может кэшировать часто используемые числа, например от -127 до 128, чтобы ускорить преобразование и уменьшить объем памяти.

По этой причине рекомендуется использовать метод valueOf() для преобразования как String, так и Integer.

Integer.toString ()

В этом подходе используется один из наиболее распространенных методов Java - toString() общий для всех объектов.

Этот метод имеет множество применений и требует подробного объяснения. Если вы хотите узнать об этом больше, у нас уже есть отличная статья, посвященная этому вопросу!

В этом случае метод возвращает объект String, представляющий указанный 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() как показано выше.

String.format ()

Возвращает строку, отформатированную в соответствии со спецификатором формата и следующими аргументами. Хотя цель этого метода не столько в преобразовании, сколько в форматировании String, его также можно использовать для преобразования.

Есть довольно много спецификаторов на выбор:

  • %a - шестнадцатеричный вывод числа с плавающей запятой
  • %b - истина, если не ноль, ложь, если ноль
  • %c - символ Юникода
  • %d - десятичное целое число
  • %e - научная запись десятичного целого числа
  • %f - десятичное число с плавающей запятой
  • %g - То же, что и выше, но возможно научное, в зависимости от значения
  • %h - шестнадцатеричная строка возвращаемого значения hashCode ()
  • %n - разделитель строк
  • %o - восьмеричное целое число
  • %s - Строка
  • %t - преобразование даты / времени
  • %x - шестнадцатеричная строка

В этом уроке мы сосредоточимся на %d

 int i = 12345; 
 
 String string = String.format("%d", i); 
 
 System.out.println(string); 

Выполнение этого фрагмента кода даст:

 12345 

Метод format() генерирует IllegalFormatConversionException если вы передаете несовместимый тип, например, передаете Integer для спецификатора %s , который ожидает объект String.

Некоторые из наиболее распространенных спецификаторов: %s для строки, %d для десятичного целого числа и %n .

StringBuilder и StringBuffer

И 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 или Integer в String с помощью инструментов, поставляемых с JDK.

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus