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

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

Автоматическое преобразование типов данных в языке программирования java происходит в том случае, если мы присваиваем одной переменной значение переменной другого типа, и при этом выполняются следующие условия:

  • типы данных должны быть совместимы (например, нельзя присваивать переменной типа boolean значение типа int);
  • тип данных переменной, которой присваивается значение, должен быть больше по размеру типа данных переменной, чье значение присваивается.

Например, можно преобразовывать значение типа short в тип int. Это называется расширяющим преобразованием.
А вот если вам понадобится преобразовать значение типа long в значение типа short, автоматически этого не произойдет. Данное преобразование приходится осуществлять вручную — это называется сужающим преобразованием.
Чтобы сопоставить такие несовместимые типы, необходимо явно указать операцию приведения типов, например:

long 1 = 111111111;
short s;
s = (short) 1; // Приведение типов.

 

Другая операция, под названием усечение, происходит при присвоении значения с плавающей точкой переменной с целым типом. Скажем, значение 1.11 будет усекаться до значения 1.

Чтобы узнать, совместимы ли два типа данных, необходимо использовать оператор instanceof. Приведу пример его использования — пояснения см. в комментариях (листинг 2.8).

 

Листинг 2.8.
Пример использования оператора instanceof

Type i; Туре2 j;
if (i instanceof Туре2)
// Если тип переменной i совместим с типом данных Туре2, то:
j = (Туре2) i;
// Преобразуем значение i в Туре2.

Искусственно можно преобразовывать значения почти любых типов данных в иные типы данных (например, преобразовать строку в любой тип данных, используя методы, которые предлагает класс String). Для этого необходимо применять методы так называемых классов-оболочек из пакета java.util (подробнее об этом говорится в главе »Знакомьтесь: пакеты»).

< Предыдущая       Оглавление       Следующая >

Комментарии: 4
  1. WizardX

    Здравствуйте, долго искал по опратору instanceof, но все равно не понятно:

    String stroka = «»;
    boolean proverka;
    proverka = stroka instanceof Integer;

    Почему не работает такая программа? Как я понял, instanceof выдает true/false, но с классами типа Integer/Character/Double и т.д. работать не хочет… В чем дело?

    1. admin (автор)

      В данном примере компилятор выдает ошибку еще до выполнения кода, поскольку классы String и Integer не могут быть автоматически преобразованы друг к другу и не состоят в связях наследования.

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