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