Иногда возникают ситуации, когда имея величину какого-либо определенного типа, необходимо присвоить ее переменной другого типа. С переменными и их типами мы познакомились в прошлом уроке, в этом уроке мы рассмотрим наиболее популярные преобразования типов в Java:
- Преобразование строки в число
- Преобразование числа в строку
- Преобразования символа char
- Преобразования чисел
Java преобразование строки в число (STRING to NUMBER)
В следующих примерах будет использована конструкция try-catch. Это необходимо для обработки ошибки, в случае, если строка содержит иные символы кроме чисел или число, выходящее за рамки диапазона допустимых значений определенного типа.
Например, строка «somenumber» не может быть переведена в тип int или в любой другой числовой тип. В это случае, при компеляции возникнет ошибка. Чтобы этого избежать, следует обезопаситься с помощью конструкции try-catch.
String to byte
C использованием конструктора
try { Byte b1 = new Byte("10"); System.out.println(b1); } catch (NumberFormatException e) { System.err.println("Неверный формат строки!"); }
С использованием метода valueOf класса Byte
String str1 = "111"; try { Byte b2 = Byte.valueOf(str1); System.out.println(b2); } catch (NumberFormatException e) { System.err.println("Неверный формат строки!"); }
С использованием метода parseByte класса Byte
byte b = 0; String str2 = "100"; try { b = Byte.parseByte(str2); System.out.println(b); } catch (NumberFormatException e) { System.err.println("Неверный формат строки!"); }
Перевод строки в массив байтов и обратно из массива байтов в строку
String str3 = "20150"; byte[] b3 = str3.getBytes(); System.out.println(b3); //массив байтов переводим обратно в строку try { String s = new String(b3, "cp1251"); System.out.println(s); } catch (UnsupportedEncodingException e) { e.printStackTrace(); }
String to short
C использованием конструктора
try { Short s1 = new Short("68"); System.out.println(s1); }catch (NumberFormatException e) { System.err.println("Неверный формат строки!"); }
C использованием метода valueOf класса Short
String str1 = "59"; try { Short s2 = Short.valueOf(str1); System.out.println(s2); }catch (NumberFormatException e) { System.err.println("Неверный формат строки!"); }
C использованием метода parseShort класса Short
short s3 = 0; String str2 = "100"; try { s3 = Short.parseShort(str2); System.out.println(s3); } catch (NumberFormatException e) { System.err.println("Неверный формат строки!"); }
String to int
C использованием конструктора
try { Integer i1 = new Integer("20349"); System.out.println(i1); }catch (NumberFormatException e) { System.err.println("Неверный формат строки!"); }
C использованием метода valueOf класса Integer
String str1 = "1451"; try { Integer i2 = Integer.valueOf(str1); System.out.println(i2); }catch (NumberFormatException e) { System.err.println("Неверный формат строки!"); }
C использованием метода parseInt класса Integer
int i3 = 0; String str2 = "102944"; try { i3 = Integer.parseInt(str2); System.out.println(i3); } catch (NumberFormatException e) { System.err.println("Неверный формат строки!"); }
String to long
C использованием конструктора
try { Long l1 = new Long("11111111"); System.out.println(l1); } catch (NumberFormatException e) { System.err.println("Неверный формат строки!"); }
C использованием метода valueOf класса Long
String str1 = "222222222"; try { Long l2 = Long.valueOf(str1); System.out.println(l2); } catch (NumberFormatException e) { System.err.println("Неверный формат строки!"); }
C использованием метода parseLong класса Long
long l3 = 0; String str2 = "333333333"; try { l3 = Long.parseLong(str2); System.out.println(l3); } catch (NumberFormatException e) { System.err.println("Неверный формат строки!"); }
String to float
С использованием конструктора
try { Float f1 = new Float("123.5"); System.out.println(f1); } catch (NumberFormatException e) { System.err.println("Неверный формат строки!"); }
C использованием метода valueOf класса Float
String str1 = "3.1415"; try { Float f2 = Float.valueOf(str1); System.out.println(f2); } catch (NumberFormatException e) { System.err.println("Неверный формат строки!"); }
C использованием метода parseFloat класса Float
float f3 = 0; String str2 = "36.6"; try { f3 = Float.parseFloat(str2); System.out.println(f3); } catch (NumberFormatException e) { System.err.println("Неверный формат строки!"); }
String to double
С использованием конструктора
try { Double d1 = new Double("4.4e10"); System.out.println(d1); } catch (NumberFormatException e) { System.err.println("Неверный формат строки!"); }
C использованием метода valueOf класса Double
String str1 = "564.6e10"; try { Double d2 = Double.valueOf(str1); System.out.println(d2); } catch (NumberFormatException e) { System.err.println("Неверный формат строки!"); }
C использованием метода parseDouble класса Double
double d3 = 0; String str2 = "13.7e10"; try { d3 = Double.parseDouble(str2); System.out.println(d3); } catch (NumberFormatException e) { System.err.println("Неверный формат строки!"); }
String to boolean
Преобразование строки в логический тип 2мя способами. Обратите внимание, что строка не соответствующая true, будет преобразована в логическое значение false.
String s1 = "True"; String s2 = "yes"; boolean bool1, bool2, boolean1, boolean2; //с использованием метода parseBoolean bool1 = Boolean.parseBoolean(s1); bool2 = Boolean.parseBoolean(s2); System.out.println( bool1 ); System.out.println( bool2 ); //c использованием метода valueOf boolean1 = Boolean.valueOf(s1); boolean2 = Boolean.valueOf(s2); System.out.println( boolean1 ); System.out.println( boolean2 );
Java преобразование числа в строку (NUMBER to STRING)
int to String
int i = 35; String str = Integer.toString(i); System.out.println(str);
double to String
double i = 32.4e10; 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.46f; String str = Float.toString(i); System.out.println(str);
Преобразования символа char
char to String
char ch = 'S'; // c использованием класса Character String charToString = Character.toString(ch); System.out.println(charToString); // с использованием операции добавления класса String String str = "" + ch; System.out.println(str); //с использованием массива String fromChar = new String(new char[] { ch }); System.out.println(fromChar); // с использованием метода valueOf класса String String valueOfchar = String.valueOf(ch); System.out.println(valueOfchar);
char to int
char ch = '9'; // c использованием метода getNumericValue // класса Character int i1 = Character.getNumericValue(ch); System.out.println(i1); // c использованием метода digit класса Character int i2 = Character.digit(ch,10); System.out.println(i2);
Преобразования чисел
int to long
int i = 2015; long l = (long) (i); System.out.println(l);
int to float
int i = 2015; float f = (float) (i); System.out.println(f);
long to int
long l = 214748364; int i = (int) l; System.out.println(i);
double to int
double d = 3.14; int i = (int) d; System.out.println(i);
обратите внимание на то, что после преобразования double в int отбрасывается дробная часть и остается только целое число. Так, в нашем примере, на консоль будет выведено число 3.
Наконец-то, умные люди догадались собрать все конверсии в одном месте.
ну не все.. но основные:) спасибо за коммент
Мария извините за вопрос не по теме, а кем вы работаете? и как думаете есть ли достойные перспективы для самоучки?
Большинство программистов, которых я знаю — самоучки. Но фирмы все-таки хотят в большинстве чтобы ваши знания были подкреплены дипломом или предыдущим опытом работы. Но если вам удасться устроиться куда-нибудь программистом-юниором и потом совершенствовать свои знания и изучать новые технологии, то конечно достойные перспективы будут.
Здравствуйте, Мария. Не могли бы вы мне объяснить, как преобразовать переменную типа String в переменную типа Button.
Спасибо!
Добрый день, строку нельзя преобразоать в кнопку … уточните что вы конкретно хотите сделать. Если на кнопку добавить текст, то тут в зависимоти от библиотеки которую используете. Если используете JButton, то это делается так button.setText(«Моя кнопка»); где button это переменная типа Button
Мария, если мне не изменяет память, то String в Button все-таки можно преобразовать. :))))
PS:
я не специалист в Яве, но насколько я помню С++, то можно перегрузить класс типа Button и определить для него реакцию на оператор = как копирование содержания из String с правой стороны, в внутреннюю переменную caption объекта с левой части оператора, через вызов того что вы написали — setText.
Добрый день, Андрей, если не сложно, приведите пример кода (можно С++) такого преобразования. Только код разместите на pastebin.com, а сюда в комментарий ссылку, спасибо.
Button& Button::operator=( String &s )
{
this->caption = (s.Lentgh() < 0 ))? new String (s) : "-no value-";
return *this;
}
(Пардон — пастбин из китая не открылся, насчет примера — я давно не писал, но форма примерно такая.
Вообще же по перегрузке операторов классов целая куча статей. :))
Java не поддерживает перегрузки операторов. Там только перегрузка методов есть. Вообще можно сделать так
String str = "Text";
JButton a = new JButton(str);
Но ведь это не преобразование строки в кнопку, а создание кнопки и задание ее имени используя эту строку.
При выполнении представленного выше кода:
String str3 = «20150»;
byte[] b3 = str3.getBytes();
System.out.println(b3);
в консоль выводится:
[B@10def14f
Это ожидаемое поведение или ошибка в коде ?
Ожидаемое. Хотя в практических целях врядли когда-нибудь потребуется выводить на консоль строку переведенную в масив байтов.
При переводе строки обратно в строку из массива байтов возникает ошибка cannot find symbol
U(<)nsupportedEncodingException
Не могу понять в чем дело.
такая ошибка возникает, когда не поддерживается кодировка символов
А каким образом это можно исправить? При запуске в Eclipse выдает Cannot be resolved to a type
не знаю, лично с этим не сталкивалась, погуглите