суббота, 2 августа 2008 г.

Литералы

Известно, что в java литералы целых чисел имеют по умолчанию тип int, а литералы чисел с плавающей точкой – double. Но, помимо различий в типе, есть ещё некоторое различие в поведении.

Не удивительно, что эта строчка при компиляции вызывает ошибку из-за несовместимости типов float и double:

float f = 25.2; // слева float, справа double

И, казалось бы, следующий пример тоже не должен был бы компилироваться, ведь int не преобразуется в byte неявно:
byte b = 127; // слева byte, справа int

Однако последний пример компилируется! В этом случае, если значение справа представимо типом byte (от -128 до 127), компилятор сам выполнит преобразование. Аналогично, без явного преобразования, целочисленные литералы можно присваивать типам short и char.

Комментариев нет: