🔥 🚀 Важно для всех, кто работает с Java! 🔥
На JavaRocks ты найдешь уникальные туториалы, практические задачи и редкие книги, которых не найти в свободном доступе. Присоединяйся к нашему Telegram-каналу JavaRocks — стань частью профессионального сообщества!
В этой статье мы обсудим преобразование String в int . В Java есть много способов сделать это.
Как преобразовать String в int
Несколько способов:
C помощью Integer.parseInt(String)
parseInt — в Java используется для получения примитивного типа данных из определенной строки, другими словами – преобразует строку в число.
Синтаксис:
public static int parseInt(String str) throws NumberFormatExceptionRun CodeИли
public static int parseInt(String str, int radix) throws NumberFormatExceptionRun 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 = 7Run 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); // falseRun 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».
