Преобразование из строки в число в Java

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

Простой пример преобразования “ string to integer” в java

Всего одна строка решает вопрос перевода строки в число.

inti = Integer.parseInt(myString);

Нельзя забывать о возможных исключениях. Но в случае если myString содержит в себе действительно число из диапазона int, к примеру “4” или“-100”, то при выполнении кода значение переменной будет преобразовано в тип int.

Полный пример перевода string в int

Полный пример включает дополнительный код:

publicclassJavaStringToIntExample{publicstaticvoidmain (String[] args){// Strings = «fred»;//

Проведение теста на наличие исключения Strings = «100»;try{// Переводим String в int<spanclass=»strong»>inti = Integer.parseInt(s.trim());</span>// Вывод преобразованного значения System.out.println(«inti = » + i);}catch (NumberFormatExceptionnfe){System.out.println(«NumberFormatException: » + nfe.getMessage());}}}

Строка кода содержит обработку исключения вне диапазона NumberFormatException. В примере показан полный перевод из строкового типа в формат целого числа. Это исключение можно обработать и вручную.

Преобразования базовых типов данных

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

int a = 4;
byte b = a; // ! Ошибка

Несмотря на то, что тип int укладывается в диапазон byte – компиляция указывает на ошибку в коде. В языке Java нельзя перевести данные из типа размером 4 байта в 1, как в примере выше.

Если такое преобразование требуется, но нужно использовать соответствующую операцию:

int a = 4;
byte b = (byte)a;// преобразование типов: из типа int в тип byte

Синтаксис операции преобразования типов выглядит так — ().В скобках указывается название типа, к которому нужно перевести переменную.

Явные и неявные преобразования

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

Автоматические преобразования

Есть типы, которые преобразуются автоматически, или, как это называется в программировании, неявно. Неявно можно преобразовать:

  • byte в short
  • short в int
  • char в int
  • int в long
  • int в double
  • float в double

С потерей точности автоматически переводятся:

  • int в float
  • long в float
  • long в double

Неявно преобразовываются так называемые расширяющие преобразования, когда значение меньшего объема переводится в большее, и начинает занимать больше памяти.

Явные преобразования

Все преобразования кроме указанных выше необходимо выполнять явно, чтобы избежать ошибок при выполнении кода. Уменьшение разряда в типах называется сужающим преобразованием, и выполняется как на примере ниже:

long a = 4;
int b = (int) a;

Преобразования при операциях

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

  • если один из операндов принадлежит типу double, то второй тоже будет преобразован к этому типу
  • если условие выше не выполняется, то если один из операндов float, то второй тоже будет преобразован во float
  • если условия выше не соблюдены, и один из операндов – long, то и второй будет преобразован к long
  • иначе оба операнда приводятся к типу int

Потеря данных при преобразовании

При явном преобразовании часто происходят потери данных. Например в коде ниже проблем не возникает:

int a = 5;
byte b = (byte) a;

Значение 5 входит в диапазон byte, и при преобразовании не получается никаких потерь. Но если же мы выполним следующий код:

int a = 258;
byte b = (byte) a;

То получим число 2 в результате усечения значения int до диапазона byte. Значения byte занимают всего 8 бит памяти компьютера, и соответственно физически не могут вместить число 258 полностью.

Метод valueOf

Существует второй способ преобразования строки в целочисленный тип. Например между двумя методами существует разница:

Integer x = Integer.valueOf(myString);
int y = Integer.parseInt(myString);

Применение valueOf возвращает новый или кэшированный экземпляр java.lang.Integer.

Выполнение преобразования stringtobyte

Данное действие можно выполнить следующими способами.

Используя конструктор:

try {
Byte b1 = new Byte(«10»);
System.out.println(b1);
} catch (NumberFormatException e) {
System.err.println(«Неверный формат входной строки!»);
}

Используя метод класса BytevalueOf:

String str1 = «141»;
try {
Byte b2 = Byte.valueOf(str1);
System.out.println(b2);
} catch (NumberFormatException e) {
System.err.println(«Неверный формат входной строки!»);
}

Используя метод класса ByteparseByte:

byte b = 0;
String str2 = «108»;
try {
b = Byte.parseByte(str2);
System.out.println(b);
} catch (NumberFormatException e) {
System.err.println(«Неправильный формат строки!»);
}

Для примера приведем перевод из типа Byte обратно в текстовый тип:

//перевод в битовый тип данных
String str3 = «20150»;
byte[] b3 = str3.getBytes();
System.out.println(b3);

//перевод в string в обратную сторону
try {
String s = new String(b3, «cp1251»);
System.out.println(s);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}

Преобразование разных числовых типов в строку в Java

int to String
inti = 53;
String str = Integer.toString(i);
System.out.println(str);
double to String
double i = 31.6e10;
String str = Double.toString(i);
System.out.println(str);
long to String
long i = 3422222;
String str = Long.toString(i);
System.out.println(str);
float to String
float i = 3.98f;
String str = Float.toString(i);
System.out.println(str);

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

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