🔥 🚀 Важно для всех, кто работает с Java! 🔥
На JavaRocks ты найдешь уникальные туториалы, практические задачи и редкие книги, которых не найти в свободном доступе. Присоединяйся к нашему Telegram-каналу JavaRocks — стань частью профессионального сообщества!
В этой статье мы обсудим преобразование String в int
. В Java есть много способов сделать это.
Как преобразовать String в int
Несколько способов:
C помощью Integer.parseInt(String)
parseInt
— в Java используется для получения примитивного типа данных из определенной строки, другими словами – преобразует строку в число.
Синтаксис:
public static int parseInt(String str) throws NumberFormatException
Run CodeИли
public static int parseInt(String str, int radix) throws NumberFormatException
Run CodeГде str
это строка, которую нужно преобразовать, и radix
это основание системы исчисления числа числа
Преобразование строки в целое число, пример с использованием parseInt()
public class Demo2 {
public static void main(String args[]) {
String str = "111";
int num1 = Integer.parseInt(str);
System.out.println("parseInt of the String = "
+ num1);
int num2 = Integer.parseInt(str, 2);
System.out.println("parseInt of the String with radix parameter = " + num2);
}
}
Run CodeВывод:
parseInt of the String = 111
parseInt of the String with radix parameter = 7
Run CodeЗдесь у нас 111 в первом варианте и 7 во втором. 7 — это десятичная форма двоичного числа 111.
Преобразовать с помощью Integer.valueOf(String)
Integer.valueOf(String s)
— метод Java класса Integer
. Он возвращает целочисленную интерпретацию объекта String
, поэтому он используется для преобразования String в Integer.
Синтаксис:
public static Integer valueOf(String str)
Example Java String to Integer using valueOf method:
public class Demo2 {
String myString = "578";
int parNum = Integer.valueOf(myString);
System.out.println("Integer from String using valueOf() = " + parNum);
}
}
Run CodeВывод:
Integer from String using valueOf() = 578
Преобразование с использованием метода Integer.decode
Метод Integer.decode
является универсальным инструментом для преобразования строк в целые числа. В отличие от Integer.parseInt
, который требует от программиста явного указания основания системы счисления, decode
может автоматически интерпретировать основание входной строки. Он поддерживает:
- Десятичные числа: стандартные целые числа с основанием 10.
- Шестнадцатеричное: строки с префиксом
0x
или#
. - Восьмеричное: строки с префиксом
0
.
Как Integer.decode
обрабатывает различные основания
Метод decode
использует префикс строки для определения числовой базы:
- Без префикса: Интерпретируется как десятичное число (основание 10).
- Префикс
0x
или#
: Интерпретируется как шестнадцатеричное число (основание 16). - Префикс
0
: Интерпретируется как восьмеричное число (основание 8).
Примеры:
public class IntegerDecodeExample {
public static void main(String[] args) {
String decimalString = "123";
String hexString = "0x7B";
String octalString = "0173";
int decimalValue = Integer.decode(decimalString);
int hexValue = Integer.decode(hexString);
int octalValue = Integer.decode(octalString);
System.out.println("Decimal: " + decimalValue); // Output: 123
System.out.println("Hexadecimal: " + hexValue); // Output: 123
System.out.println("Octal: " + octalValue); // Output: 123
}
}
Run CodeОбработка исключений, характерных для Integer.decode
Хотя Integer.decode
надежен, неправильные входные данные могут привести к исключениям. Основные исключения включают:
NumberFormatException
: Возникает, когда входная строка не является допустимым числом (например, «abc»).NullPointerException
: Вызывается, когда входная строка —null
.
Пример с обработкой исключений:
public class DecodeExceptionExample {
public static void main(String[] args) {
String invalidString = "xyz";
String nullString = null;
try {
int value = Integer.decode(invalidString);
System.out.println("Value: " + value);
} catch (NumberFormatException e) {
System.out.println("Invalid number format: " + e.getMessage());
}
try {
int value = Integer.decode(nullString);
System.out.println("Value: " + value);
} catch (NullPointerException e) {
System.out.println("Null input: " + e.getMessage());
}
}
}
Run CodeКогда использовать Integer.decode
decode
метод особенно полезен при работе с входными данными из внешних источников (например, файлы конфигурации или пользовательские входные данные), которые могут быть в различных числовых форматах.
Видео на английском о преобразовании String to Integer
Выбор между Integer
и int
в Java
Java предоставляет два варианта представления целочисленных значений: int
(примитивный тип) и Integer
(класс-обертка). Выбор между ними зависит от нескольких факторов:
- Производительность:
int
более эффективно использует память и быстрее, поскольку является примитивным типом - Допустимость значений NULL:
Integer
может хранитьnull
значения, что делает его полезным в ситуациях, когдаnull
представляет неинициализированное или отсутствующее значение. - Коллекции:
Integer
необходимы при работе с универсальными коллекциями, такими какList<Integer>
, поскольку примитивы не могут использоваться в качестве параметров типа.
Использование Integer
с базами данных и коллекциями
В контексте баз данных Integer
часто используется по следующим причинам:
- Позволяет полям, допускающим значение NULL, представлять ‘отсутствующие’ null значения из базы данных.
- Такие фреймворки, как Hibernate и JPA, марят(map)
INTEGER
типы SQL с JavaInteger
, обеспечивая их совместимость.
Кэширования Integer
объектов
Java кэширует Integer
объекты со значениями в диапазоне от -128 до 127. Это означает, что в этом диапазоне Integer
объекты используются повторно, что влияет на проверку равенства обьектов. Посмотрите интересный пример:
Пример:
Integer a = 127;
Integer b = 127;
System.out.println(a == b); // true
Integer c = 128;
Integer d = 128;
System.out.println(c == d); // false
Run CodeПри сравнении Integer
объектов используйте .equals()
вместо , ==
чтобы обеспечить правильную проверку равенства, особенно для значений за пределами кэшированного диапазона.
Обработка исключений для NumberFormatException
Попытка преобразовать нечисловую строку в целое число с помощью Integer.parseInt()
или Integer.valueOf()
выдаст NumberFormatException
. Для обработки таких ситуаций, заключите логику преобразования в try-catch
блок.
Пример:
public class NumberFormatExample {
public static void main(String[] args) {
String input = "123abc";
try {
int value = Integer.parseInt(input);
System.out.println("Converted value: " + value);
} catch (NumberFormatException e) {
System.out.println("Invalid number format: " + input);
}
}
}
Run CodeОбработка проблем с переполнением Integer
При преобразовании очень больших строк может возникнуть целочисленное переполнение, если значение превышает Integer.MAX_VALUE
или меньше Integer.MIN_VALUE
. Чтобы справиться с этим:
Пример:
public class OverflowExample {
public static void main(String[] args) {
String largeNumber = "2147483648"; // Exceeds Integer.MAX_VALUE
try {
int value = Integer.parseInt(largeNumber);
System.out.println("Converted value: " + value);
} catch (NumberFormatException e) {
System.out.println("Overflow detected: " + largeNumber);
}
}
}
Run CodeРеальные примеры обработки исключений
В реальных приложениях обработка недопустимых входных данных имеет очень важное значение. Ниже приведен последний полный пример проверки пользовательского ввода:
import java.util.Scanner;
public class RealWorldExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter an integer: ");
String input = scanner.nextLine();
try {
int value = Integer.parseInt(input);
System.out.println("You entered: " + value);
} catch (NumberFormatException e) {
System.out.println("Invalid input. Please enter a valid integer.");
}
}
}
Run CodeПеревод статьи «How to convert String to int in Java».