Преобразование Char в Int в Java с примерами

Довольно часто символьная информация, которую пользователи вводят с клавиатуры, должна быть преобразована в числа. В Java есть несколько методов, которые это делают. В этой статье мы разберемся с нми

Неявное приведение типов

Приведение типов — это процесс преобразования значения одного типа данных в значение другого типа данных.
Приведение типов может быть ручным или автоматическим в зависимости от типа даных. Типы должны быть совместимы. В Java у нас есть два типа приведения типов: явное и неявное.

Неявное можно выполнить только в том случае, если мы преобразуем переменную из «большего» в «меньший» тип (например, из int в long ). Если мы хотим преобразовать переменную типа char в тип данных int, чаще всего нам нужно получить ее эквивалентное значение из таблицы ASCII.

Каждый символ, который можно ввести в цифровом виде, имеет соответствующее уникальное целое число. Например, символ «A» имеет код ASCII 65. Приведением типов мы принудительно преобразуем значение символа в его эквивалентный целочисленный код ASCII.

Пример преобразования char в int на Java (использование typeCasting)

package charToInt;

public class Implicit {

       public static void main(String[] args) {
           char char1 = 'A';
           char char2 = 'a';
           int x = char1;
           int y = char2;

           System.out.println("ASCII value of '" + char1 + "' is " + x);
           System.out.println("ASCII value of '" + char2 + "' is " + y);
       }
   }
Run Code

Вывод:

ASCII value of 'A' is 65
ASCII value of 'a' is 97

Явное приведение типов

Как мы видели выше, в случае преобразования char в int нет необходимости делать это явно, поскольку для хранения char используется 2 байта, а для хранения int — 4 байта. То есть тип int «больше». Тем не менее, в качестве упражнения мы можем явно привести переменную char к целому числу. Для этой операции мы будем использовать (int) в скобках.

package charToInt;

public class Explicit {

       public static void main(String[] args) {
           char char1 = 'A';
           System.out.println("ASCII value of '" + char1 + "' is " + (int)char1);
       }
   }
Run Code

Вывод:

ASCII value of 'A' is 65

Преобразование char в int с помощью getNumericValue()

getNumericValue() работает аналогично приведению типов, но вместо следования таблице ASCII он следует стандарту кодировки Unicode.

ASCII может представлять только определенный набор символов и знаков, таких как латинские буквы, цифры, знаки препинания и управляющие символы.

Unicode содержит более миллиона значений, содержащих буквы и символы для каждого языка мира. Например, значение A в Unicode равно \u0041, что эквивалентно числовому значению 10.

Если символ не имеет числового значения, метод возвращает -1. Использование этого метода может быть удобным для возврата неотрицательных целых чисел.

package charToInt;

public class UsingGetNumericValue {

       public static void main(String[] args) {
           char char1 = '7';
           char char2 = 'A';
           char char3 = '*';

           int x = Character.getNumericValue(char1);
           int y = Character.getNumericValue(char2);
           int z = Character.getNumericValue(char3);

           System.out.println("The Unicode value of '" + char1 + "' is " + x);
           System.out.println("The Unicode value of '" + char2 + "' is " + y);
           System.out.println("The Unicode value of '" + char3 + "' is " + z);

       }
   }
Run Code

Вывод:

The Unicode value of '7' is 7
The Unicode value of 'A' is 10
The Unicode value of '*' is -1

Преобразование char в int с помощью ParseInt()

ParseInt() — еще один метод преобразования char в int. Он также широко используется для преобразования между другими числовыми типами данных, такими как float, double и long.

ParseInt() требует как минимум одного и как максимум двух аргументов. Первый аргумент — это имя переменной преобразуемого значения. Второй аргумент — это основание, которое ссылается на базовое значение десятичной, восьмеричной, шестнадцатеричной и т. д.

Благодаря способности ParseInt() преобразовывать типы данных с учетом системы счисления, это оптимальный выбор для преобразования «числового» char в int в Java. Есть два важных момента, которые следует иметь в виду, если вы хотите использовать этот метод. Метод parseInt() принимает только строковые аргументы, поэтому сначала вам следует преобразовать char в String (используя String.valueOf ). Вы не можете использовать parseInt() для преобразования символов, за исключением числовых значений, хранящихся в типе данных char. Если вы введете нечисловые значения, вы получите ошибку.

Вот пример:

package charToInt;

public class ParseInt {
       public static void main(String args[]){
           char ch = '7';
           int n = Integer.parseInt(String.valueOf(ch));
           System.out.println(n);
       }
   }
Run Code

Вывод:

7

Давайте попробуем использовать parseInt для нечислового значения:

package charToInt;

public class ParseInt {
       public static void main(String args[]){
           char ch = 'q';
           int n = Integer.parseInt(String.valueOf(ch));
           System.out.println(n);
       }
   }
Run Code

Вывод:

Exception in thread "main" java.lang.NumberFormatException: For input string: "q"
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68)
at java.base/java.lang.Integer.parseInt(Integer.java:652)
at java.base/java.lang.Integer.parseInt(Integer.java:770)
at charToInt.ValueOf.main(ValueOf.java:6)

Вычитание «0»

Существует очень простой способ преобразовать символа в целое число. Для этого просто вычтите ASCII-значение символа “0” из символа. Например, чтобы получить int 7 из символа “7”:

int intValue = '7'-' 0 ';
Run Code

Обратите внимание, что это работает для получения значений int исключительно для целых символов! Если вы вычтете ‘0’ из, скажем, ‘A’, метод просто вернет разницу между ASCII-кодами нуля и буквы A. Вот пример.

package charToInt;

public class SubtractingZero {

   public static void main(String[] args) {
       char char1 = '7';
       char char2 = 'A';
       char char3 = '*';

       System.out.println(char1);
       System.out.println(char1 - '0');

       System.out.println(char2);
       System.out.println(char2 - '0');

       System.out.println(char3);
       System.out.println(char3 - '0');

   }

}
Run Code

Вывод:

7 7 А 17 * -6

Выводы

Если вам необходимо преобразовать char в int в Java, используйте один из методов:

  • Неявное приведение типов // получение значений ASCII
  • Character.getNumericValue()
  • Integer.parseInt() // в паре с String.valueOf())
  • Вычитание ‘0’ // работает только для целых числовых значений

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

Перевод статьи «Convert Char to Int in Java with examples».

Оставьте комментарий

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

Прокрутить вверх