Продолжается набор новой группы на курс Enterprise Patterns! Старт курса 02.12.2024. Регистрируйтесь со скидкой 30% до 31.10.2024!
Узнать больше
30.09.2024
8 минут чтения

Как в Java правильно конвертировать int в String и наоборот

JAVA является строго типизированным языком программирования. Это означает, что каждая переменная имеет определенный тип данных, и конвертация между ними часто необходима для выполнения различных задач. Одной из самых распространенных задач является преобразование числовых типов, таких как int, в текстовые (String) и наоборот. Мы рассмотрим несколько способов достижения этого, включая использование классов Integer, String, StringBuilder, DecimalFormat, Scanner, а также форматирование строк и конкатенацию. Более углубленно и детально FoxmindEd сможет научить вас этому на курсах программирования. А пока наслаждайтесь статьей, и выбирайте способ, наиболее подходящий для ваших задач.

🚀 Курс Java Start от Сергея Немчинского сделает ваш старт в Java понятным и быстрым! 📆 Продолжительность курса: Среднее время прохождения — 2-4 недели.
Записаться на курс

Конвертация int в String

Оператор конкатенации

Вероятно самый простой способ превратить числовое значение в строку, это использование оператора конкатенации «+». Надо только добавить к числовому значению пустую строку.

public class Main {

   public static void main(String[] args) {

       int number = 789;

       String str = number + "";

       System.out.println("Число как строка: " + str); // -> Число как строка: 789

   }

}

Класс Integer

Один из самых распространенных и простых способов конвертации int в строку — это использование класса Integer. Этот класс предоставляет статический метод toString(int value), который принимает значение типа int и возвращает его строковое представление.

public class Main {

   public static void main(String[] args) {

       int number = 123;

      String str = Integer.toString(number);

       System.out.println("Число как строка: " + str); // -> Число как строка: 123

   }

}

Класс String

Другой популярный способ конвертации значения типа int в строку — это использование класса String. Класс String предоставляет статический метод valueOf(int value), который принимает значение типа int и конвертирует его в строку.

public class Main {

   public static void main(String[] args) {

       int number = 456;

       String str = String.valueOf(number);

       System.out.println("Число как строка: " + str); // -> Число как строка: 456

   }

}

Классы StringBuilder и StringBuffer

Еще один способ — это использовать классы StringBuilder и StringBuffer. Оба класса имеют метод append(int value), который позволяет добавлять числовое значение к существующей строке. Разница между StringBuilder и StringBuffer заключается в том, что последний синхронизирован и безопасен для использования в многопоточных приложениях, тогда как StringBuilder не синхронизирован, но обеспечивает лучшую производительность в однопоточных приложениях.

public class Main {

   public static void main(String[] args) {

       int number = 789;

       StringBuilder stringBuilder = new StringBuilder();

       stringBuilder.append(number);

       String str = stringBuilder.toString();

       System.out.println("Число как строка (StringBuilder): " + str); // -> Число как строка (StringBuilder): 789

       StringBuffer stringBuffer = new StringBuffer();

       stringBuffer.append(number);

       String str2 = stringBuffer.toString();

       System.out.println("Число как строка (StringBuffer): " + str2); // -> Число как строка (StringBuffer): 789

   }

}

Однако использование этих классов может быть лишним для простых задач конвертации, где можно обойтись более простыми методами, которые мы рассмотрели выше.

Класс DecimalFormat

Класс DecimalFormat предоставляет гибкий способ для форматирования чисел и их преобразования в строки. Это особенно полезно, когда вам нужно отобразить числовые данные в определенном формате, например, с определенным количеством десятичных знаков, с разделителями тысяч или в виде валюты.

Для использования DecimalFormat, сначала нужно создать объект этого класса и определить шаблон форматирования.

Шаблон форматирования:

  • #: Число, если оно есть, иначе ничего.
  • 0: Число, если она есть, иначе 0.
  • ,: Разделитель тысяч.
  • .: Десятичный разделитель.

Примеры шаблонов:

  • «#» — отображает все числа без десятичных знаков. «1258,25655 -> 1258»
  • «0.00» — отображает число с двумя десятичными знаками, добавляя нули, если необходимо. «1258,25655 -> 1258,26» или «1258 -> 1258,00»
  • «#,####» — запятая отделяет группы по три числа, начиная с правого края числа. «1258256,25655 -> 1 258 256». В таком формате «#,##» — это будет разделение по два числа — «1258256,25655 -> 1 25 82 56»
  • «#.##» — отображает число до двух десятичных знаков без добавления нулей. «1258,25655 -> 11258,26» или «1258 -> 11258»
public class Main {

   public static void main(String[] args) {

       double number = 1234.5678;

       DecimalFormat decimalFormat = new DecimalFormat("#.##");

       String formattedNumber = decimalFormat.format(number);

       System.out.println("Отформатированное число: " + formattedNumber); // -> 1234,57

       number = 1234567;

       decimalFormat = new DecimalFormat("#,###");

       formattedNumber = decimalFormat.format(number);

       System.out.println("Отформатированное число: " + formattedNumber); // -> 1 234 567

   }

}

Этот способ так же лучше использовать для специфических задач, когда является важным использование шаблонов форматирования.

Форматирование строк

Для создания сложных строк, которые имеют несколько переменных, которые нужно объединить в определенной последовательности, можно использовать метод String.format(String format, Object… args). Этот метод позволяет форматировать строку с помощью заданного шаблона. Для конвертации int в String используется форматирующий спецификатор %d.

public class Main {

   public static void main(String[] args) {

       int userId = 123;

       String userName = "Olga";

       String formattedString = String.format("User ID: %d, Username: %s", userId, userName);

       System.out.println(formattedString); // -> User ID: 123, Username: Olga

   }

}

Метод String.format может быть менее эффективным с точки зрения производительности по сравнению с другими методами, такими как Integer.toString() или String.valueOf(). И если вам не нужно создавать сложные строки, содержащие несколько переменных, то лучше использовать более простые конструкции.

Конвертация String в int

Конвертация строки в число является несколько более сложной операцией, ведь надо убедиться, что наша строка представляет собой валидное числовое значение, иначе мы получим ошибку.

Клас Integer

Integer.parseInt(String s)

Метод Integer.parseInt(String s) принимает строку, которая представляет собой число, и возвращает его целочисленное значение типа int.

public class Main {

   public static void main(String[] args) {

       String invalidNumberString = "123";

       int number = Integer.parseInt(invalidNumberString);

       System.out.println("Число: " + number); // -> Число: 123

   }

}

Однако что будет, если передать невалидное значение, например «123а!!%»? Мы получим ошибку NumberFormatException. Чтобы избежать падения программы, мы должны обработать исключение или осуществить проверку, что числовое значение в строке является валидным.

Мы это можем делать с помощью try-catch блока, отлавливая ошибку и делая определенные действия, к примеру, вывести на экран, что числовое значение передано не верно:

public class Main {

   public static void main(String[] args) {

       String invalidNumberString = "123a";

       try {

           int number = Integer.parseInt(invalidNumberString);

           System.out.println("Число: " + number);

       } catch (NumberFormatException e) {

           System.out.println("Неверный формат числа: " + invalidNumberString); // -> Неверный формат числа: 123a

       }

   }

}

Или можно проверить, содержит ли строка необходимое значение с помощью паттерна:

public class Main {

   public static void main(String[] args) {

       String numberString = "123";

       // Паттерн “\\d+” используется в регулярных выражениях для

       // поиска одного или более цифровых символов в строке.

       if (numberString.matches("\\d+")) {

           int number = Integer.parseInt(numberString);

           System.out.println("Числовое значение передано верно: " + number); // Числовое значение передано верно: 123

       } else {

           System.out.println("Неверный формат числа");

       }

   }

}

Всегда либо обрабатывайте ошибку, либо проверяйте числовое значение в строке до его преобразования в int, чтобы предотвратить нежелательное поведение программы.

Подпишитесь на наш Ютуб-канал! Полезные видео для программистов уже ждут вас! YouTube
Выберите свой курс! Путь к карьере программиста начинается здесь! Посмотреть

Integer.parseInt(String s, int radix)

Метод Integer.parseInt(String s, int radix) позволяет конвертировать строку, представляющую число в любой системе счисления (от 2 до 36), в десятичное число (типа int). Этот метод обычно используется для специфических задач, поэтому не будем углубляться в его детали. Если вы хотите узнать больше, рекомендую ознакомиться с этой статьей: Как работает Integer.parseInt.

Integer.valueOf(String s)

Метод Integer.valueOf(String s) конвертирует строку в объект типа Integer. То есть аналогично parseInt, но вместо int мы получим Integer. Если нам нужно получить примитив — используйте parseInt, а для обертки — valueOf.

public class Main {

   public static void main(String[] args) {

       String numberString = "123";

       try {

           Integer number = Integer.valueOf(numberString);

           System.out.println("Число как объект Integer: " + number); // -> Число как объект Integer: 123

       } catch (NumberFormatException e) {

           System.out.println("Неверный формат числа: " + numberString);

       }

   }

}

Клас DecimalFormat

Метод parse(String source) класса DecimalFormat используется для преобразования строки, которая представляет числовое значение, в объект типа Number. После этого объект Number можно преобразовать в примитивный тип, такой как int, long, float или double. Шаблоны форматирования и примеры их использования мы рассмотрели выше.

public class Main {

   public static void main(String[] args) {

       String numberString = "1234";

       DecimalFormat decimalFormat = new DecimalFormat("#");

       try {

           // Парсинг строки в объект типа Number

           Number number = decimalFormat.parse(numberString);

           // Конвертация объекта Number в примитивный тип int

           int intValue = number.intValue();

           System.out.println("Число как int: " + intValue); // -> Число как int: 1234

       } catch (ParseException e) {

           System.out.println("Неверный формат числа: " + numberString);

       }

   }

}

Аналогичный совет: если вам не нужно форматировать числовое значение, то лучше использовать более простые методы.

Scanner

Если есть необходимость чтения из потока, то можно воспользоваться классом Scanner. Метод nextInt() считывает следующее целое число из потока ввода. Если введенное значение не является валидным значением, метод генерирует исключение InputMismatchException. Использование метода в случае чтения из файла является аналогичным.

public class Main {

   public static void main(String[] args) {

       Scanner scanner = new Scanner(System.in);

       System.out.print("Введите целое число: ");

       try {

           int number = scanner.nextInt();

           System.out.println("Вы ввели число: " + number);

       } catch (InputMismatchException e) {

           System.out.println("Неверный формат ввода, пожалуйста, введите целое число.");

       } finally {

           scanner.close();

       }

   }

}

Вывод

Понимание и умение применять методы конвертации позволит вам создавать надежные и эффективные приложения, которые корректно работают с числовыми и сторовыми данными. Всегда помните о важности обработки исключений и валидации введенных данных, чтобы избежать ошибок и обеспечить стабильность ваших приложений. Используйте соответствующие методы в зависимости от задачи, чтобы обеспечить оптимальную производительность и корректность кода.

FAQ
Как конвертировать int в String с помощью оператора конкатенации?

Добавьте к числу пустую строку: int number = 789; String str = number + "";

Какой метод класса Integer позволяет преобразовать int в String?

Используйте метод Integer.toString(number); для конвертации.

Можно ли использовать класс String для конвертации int в строку?

Да, метод String.valueOf(number); преобразует int в String.

Как преобразовать строку в int с помощью Integer?

Метод Integer.parseInt("123"); конвертує рядок у ціле число.

Что делать, если строка не является валидным числом?

Используйте блок try-catch для обработки ошибки NumberFormatException.

Можно ли преобразовать число из потока ввода в int?

Да, с помощью класса Scanner и метода nextInt().

У вас остались вопросы о конвертировании int в String в Java? Спрашивайте в комментариях ниже!

Добавить комментарий

Ваш имейл не будет опубликован. Обязательные поля отмечены *

Сохранить моё имя, имейл и адрес сайта в этом браузере для будущих комментариев