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

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

Вступление

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

Есть несколько способов выполнить это простое преобразование с помощью методов, встроенных в JDK.

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

Для преобразования String в Integer или int существует четыре встроенных подхода. Класс-оболочка Integer предоставляет несколько методов специально для этого использования - parseInt() , valueOf() и decode() , хотя мы также можем использовать его конструктор и передать в него String.

Эти три метода имеют разные типы возвращаемых значений:

  • parseInt() - возвращает примитивный int .
  • valueOf() - возвращает новый или кешированный экземпляр Integer
  • decode() - возвращает новый или кешированный экземпляр Integer

При этом уместно задать вопрос:

"В чем же тогда разница между valueOf() и decode() ?

Разница в том, что decode() принимает и другие представления чисел, кроме обычного десятичного - шестнадцатеричные, восьмеричные и т. Д.

Примечание. Лучше создать экземпляр Integer с помощью метода valueOf() , чем полагаться на конструктор. Это связано с тем, что метод valueOf() вернет кэшированную копию для любого значения от -128 до 127 включительно, и тем самым уменьшит объем памяти.

Integer.parseInt ()

Метод parseInt() поставляется в двух вариантах:

  • parseInt(String s) - принятие строки, которую мы хотим проанализировать
  • parseInt(String s, int radix) - Принятие строки, а также основания системы счисления

Метод parseInt() преобразует входную строку в примитивный int и выдает NumberFormatException если строка не может быть преобразована:

 String string1 = "100"; 
 String string2 = "100"; 
 String string3 = "Google"; 
 String string4 = "20"; 
 
 int number1 = Integer.parseInt(string1); 
 int number2 = Integer.parseInt(string2, 16); 
 int number3 = Integer.parseInt(string3, 32); 
 int number4 = Integer.parseInt(string4, 8); 
 
 System.out.println("Parsing String \"" + string1 + "\": " + number1); 
 System.out.println("Parsing String \"" + string2 + "\" in base 16: " + number2); 
 System.out.println("Parsing String \"" + string3 + "\" in base 32: " + number3); 
 System.out.println("Parsing String \"" + string4 + "\" in base 8: " + number4); 

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

 Parsing String "100": 100 
 Parsing String "100" in base 16: 256 
 Parsing String "Google" in base 32: 562840238 
 Parsing String "20" in base 8: 16 

Integer.valueOf ()

valueOf() поставляется в трех вариантах:

  • valueOf(String s) - принимает строку и преобразует ее в целое число
  • valueOf(int i) - принимает int и преобразует его в целое число
  • valueOf(String s, int radix) - принимает строку и возвращает целое число, представляющее значение, а затем анализирует его с заданной базой

Метод valueOf() , в отличие от метода parseInt() , возвращает Integer вместо примитивного int а также выдает NumberFormatException если String не может быть преобразован должным образом и принимает только десятичные числа:

 int i = 10; 
 String string1 = "100"; 
 String string2 = "100"; 
 String string3 = "Google"; 
 String string4 = "20"; 
 
 int number1 = Integer.valueOf(i); 
 int number2 = Integer.valueOf(string1); 
 int number3 = Integer.valueOf(string3, 32); 
 int number4 = Integer.valueOf(string4, 8); 
 
 System.out.println("Parsing int " + i + ": " + number1); 
 System.out.println("Parsing String \"" + string1 + "\": " + number2); 
 System.out.println("Parsing String \"" + string3 + "\" in base 32: " + number3); 
 System.out.println("Parsing String \"" + string4 + "\" in base 8: " + number4); 

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

 Parsing int 10: 10 
 Parsing String "100": 100 
 Parsing String "Google" in base 32: 562840238 
 Parsing String "20" in base 8: 16 

Integer.decode ()

Метод decode() принимает один параметр и имеет одну разновидность:

  • decode(String s) - принимает строку и декодирует ее в целое число

Метод decode() принимает десятичные, шестнадцатеричные и восьмеричные числа, но не поддерживает двоичные:

 String string1 = "100"; 
 String string2 = "50"; 
 String string3 = "20"; 
 
 int number1 = Integer.decode(string1); 
 int number2 = Integer.decode(string2); 
 int number3 = Integer.decode(string3); 
 
 System.out.println("Parsing String \"" + string1 + "\": " + number2); 
 System.out.println("Parsing String \"" + string2 + "\": " + number2); 
 System.out.println("Parsing String \"" + string3 + "\": " + number3); 

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

 Parsing String "100": 50 
 Parsing String "50": 50 
 Parsing String "20": 20 

Заключение

Мы рассмотрели одну из фундаментальных тем Java и распространенные проблемы, с которыми сталкиваются разработчики - преобразование строки в целое число или целое число с помощью инструментов, поставляемых с JDK.

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