Философия Java


Литералы


Обычно, когда вы вставляете литерное значение в программу, компилятор точно знает каким типом его сделать. Однако иногда тип неоднозначен. Когда это случается, вы должны указать компилятору дополнительную информацию в форме символов, ассоциированных со значением литерала. Приведенный ниже код показывает эти символы:

//: c03:Literals.java

class Literals { char c = 0xffff; // максимальное шестнадцатиричное значение для char

byte b = 0x7f; // максимальное шестнадцатиричное значение для byte

short s = 0x7fff; // максимальное шестнадцатиричное значение для short

int i1 = 0x2f; // Шестнадцатирично-десятичное (в нижнем регистре)

int i2 = 0X2F; // Шестнацчатирично-десятичное (в верхнем регистре)

int i3 = 0177; // Восьмеричное (ведущий ноль)

// Шестнадцатиричные и восьмиричные также работают с long.

long n1 = 200L; // суффикс для long

long n2 = 200l; // суффикс для long

long n3 = 200; //! long l6(200); // не допустимо

float f1 = 1; float f2 = 1F; // суффикс для float

float f3 = 1f; // суффикс для float

float f4 = 1e-45f; // 10 - основание степени

float f5 = 1e+9f; // суффикс для float

double d1 = 1d; // суффикс для double

double d2 = 1D; // суффикс для double

double d3 = 47e47d; // 10 - основание степени

} ///:~

Шестнадцатерично-десятичные (основание 16), которые работают со всеми интегрированными типами данных, указываются лидирующим символом 0x или 0X, за которыми следует 0—9 и далее a—f в верхнем, либо в нижнем регистре. Если вы попробуете проинициализировать переменную с помощью значения, большего, чем она может принять (не зависимо от числовой формы значения), компилятор выдаст вам сообщение об ошибке. Обратите внимание в приведенном выше коде на максимально допустимое шестнадцатирично-десятичное значение для char, byte и short. Если вы превысите его, компилятор автоматически преобразует значение к int и скажет вам, что необходимо сужающее приведение для присваения. Вы найдете это место, остановившись на этой строке.

Восьмеричные (основание 8) указываются лидирующим нулемв цисле и цифррами 0-7. Нет специальных литералов для бинарного впедсталения в C, C++ или Java.




Начало  Назад  Вперед



Книжный магазин