Преобразование типов данных
Автоматическое преобразование типов данных в языке программирования java происходит в том случае, если мы присваиваем одной переменной значение переменной другого типа, и при этом выполняются следующие условия:
- типы данных должны быть совместимы (например, нельзя присваивать переменной типа boolean значение типа int);
- тип данных переменной, которой присваивается значение, должен быть больше по размеру типа данных переменной, чье значение присваивается.
Например, можно преобразовывать значение типа short в тип int. Это называется расширяющим преобразованием.
А вот если вам понадобится преобразовать значение типа long в значение типа short, автоматически этого не произойдет. Данное преобразование приходится осуществлять вручную — это называется сужающим преобразованием.
Чтобы сопоставить такие несовместимые типы, необходимо явно указать операцию приведения типов, например:
1 2 3 |
long 1 = 111111111; short s; s = (short) 1; // Приведение типов. |
Другая операция, под названием усечение, происходит при присвоении значения с плавающей точкой переменной с целым типом. Скажем, значение 1.11 будет усекаться до значения 1.
Чтобы узнать, совместимы ли два типа данных, необходимо использовать оператор instanceof. Приведу пример его использования — пояснения см. в комментариях (листинг 2.8).
Листинг 2.8.
Пример использования оператора instanceof
1 2 3 4 5 |
Type i; Туре2 j; if (i instanceof Туре2) // Если тип переменной i совместим с типом данных Туре2, то: j = (Туре2) i; // Преобразуем значение i в Туре2. |
Искусственно можно преобразовывать значения почти любых типов данных в иные типы данных (например, преобразовать строку в любой тип данных, используя методы, которые предлагает класс String). Для этого необходимо применять методы так называемых классов-оболочек из пакета java.util (подробнее об этом говорится в главе »Знакомьтесь: пакеты»).