Урок J-7. Преобразование типов в Java.

Иногда возникают ситуации, когда имея величину какого-либо определенного типа, необходимо присвоить ее переменной другого типа. С переменными и их типами мы познакомились в прошлом уроке, в этом уроке мы рассмотрим наиболее популярные преобразования типов в Java:

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.

Комментарии и пинги к записи запрещены.

Комментариев к записи: 25

  1. Twilight Sparkle:

    Наконец-то, умные люди догадались собрать все конверсии в одном месте.

  2. Куаныш:

    Мария извините за вопрос не по теме, а кем вы работаете? и как думаете есть ли достойные перспективы для самоучки?

    • Мария (admin):

      Большинство программистов, которых я знаю — самоучки. Но фирмы все-таки хотят в большинстве чтобы ваши знания были подкреплены дипломом или предыдущим опытом работы. Но если вам удасться устроиться куда-нибудь программистом-юниором и потом совершенствовать свои знания и изучать новые технологии, то конечно достойные перспективы будут.

  3. artur4ik:

    Здравствуйте, Мария. Не могли бы вы мне объяснить, как преобразовать переменную типа String в переменную типа Button.
    Спасибо!

    • Мария (admin):

      Добрый день, строку нельзя преобразоать в кнопку … уточните что вы конкретно хотите сделать. Если на кнопку добавить текст, то тут в зависимоти от библиотеки которую используете. Если используете JButton, то это делается так button.setText(«Моя кнопка»); где button это переменная типа Button

      • Андрей:

        Мария, если мне не изменяет память, то String в Button все-таки можно преобразовать. :))))

        PS:
        я не специалист в Яве, но насколько я помню С++, то можно перегрузить класс типа Button и определить для него реакцию на оператор = как копирование содержания из String с правой стороны, в внутреннюю переменную caption объекта с левой части оператора, через вызов того что вы написали — setText.

        • Мария (admin):

          Добрый день, Андрей, если не сложно, приведите пример кода (можно С++) такого преобразования. Только код разместите на pastebin.com, а сюда в комментарий ссылку, спасибо.

          • Андрей:

            Button& Button::operator=( String &s )
            {
            this->caption = (s.Lentgh() < 0 ))? new String (s) : "-no value-";
            return *this;
            }

            (Пардон — пастбин из китая не открылся, насчет примера — я давно не писал, но форма примерно такая.
            Вообще же по перегрузке операторов классов целая куча статей. :))

          • Мария (admin):

            Java не поддерживает перегрузки операторов. Там только перегрузка методов есть. Вообще можно сделать так
            String str = "Text";
            JButton a = new JButton(str);

            Но ведь это не преобразование строки в кнопку, а создание кнопки и задание ее имени используя эту строку.

  4. Дмитрий:

    При выполнении представленного выше кода:
    String str3 = «20150»;
    byte[] b3 = str3.getBytes();
    System.out.println(b3);
    в консоль выводится:
    [B@10def14f

    Это ожидаемое поведение или ошибка в коде ?

    • Мария (admin):

      Ожидаемое. Хотя в практических целях врядли когда-нибудь потребуется выводить на консоль строку переведенную в масив байтов.

  5. Александр:

    При переводе строки обратно в строку из массива байтов возникает ошибка cannot find symbol
    U(<)nsupportedEncodingException
    Не могу понять в чем дело.

    • Мария (admin):

      такая ошибка возникает, когда не поддерживается кодировка символов

      • Александр:

        А каким образом это можно исправить? При запуске в Eclipse выдает Cannot be resolved to a type

Все материалы сайта study-java.ru являются результатом труда его авторов. Копирование материалов в некоммерческих целях без указания источника в виде прямой ссылки на сайт study-java.ru запрещено. Использование материалов в коммерческих целях разрешено только с письменного согласия автора. Нарушение авторских прав преследуется по закону.