Главная » Java » Типы и литералы Java

0

Каждое выражение относится к тому или иному типу (type) – тип характеризует, какие значения могут быть получены при вычислении этого выражения. Тип выражения определяется типами значений и переменных, из которых оно состоит. Типы делятся на две категории – простые и ссылочные (составные). К простым (primitive) типам относятся следующие.

 

 

 

 

]5 Одна из букв – символ кириллицы, а другая _ ASCII. Попробуйте определить, что есть что. Кто даст правильный ответ, тот получит … да ничего он не получит, поскольку таких провидцев просто нет.

  Наименование типа                                       Допустимые значения____________________

 

boolean                                                                      true или false

char                                                                                      16-битовый символ стандарта Unicode 2.1

byte                                                                                       8-битовое целое число со знаком

short                                                                                     16-битовое целое число со знаком

int                                                                                          32-битовое целое число со знаком

long                                                                                      64-битовое целое число со знаком

float                                                                                                      32-битовое число с плавающей запятой,                       соответствующее спецификации IEEE 754-1985

  double                                                                                                  64-битовое число с плавающей запятой,                        соответствующее спецификации IEEE 754-1985

__________________________________________________________________________________________

 

Каждому простому типу в Java соответствует класс-оболочка (wrapper class) из состава пакета java.lang – Boolean, character, Byte, short, Integer, Long, Float и double; ‘все классы-оболочки содержат полезные константы и методы. Например, в большинстве этих классов определены константы MIN_VALUE и MAX_VALUE, задающие допустимые минимальное и максимальное значения соответствующего типа

В классах Float и double определены также символические константы NaN, NEGATIVE_INFINITY и POSITIVE_INFINITY. В обоих классах есть метод isNaN, который позволяет выяснить, является ли заданное выражение, соответствующее типу чисел с плавающей запятой, "не числом", Т.е. не получится ли в результате вычисления выражения недопустимый результат такой как, например, нуль, поделенный на нуль. Константа NaN (сокращение от "Not а Number") служит для представления неверных значений с плавающей запятой; по смыслу она напоминает константу null, которая свидетельствует, что ссылочная переменная не указывает на правильный объект. Более подробные сведения о классах-оболочках приведены в главе 11.

В Java нет беззнаковых целочисленных типов. Если конкретная задача диктует необходимость использования целых значений без знака, их следует хранить в переменных, относящихся к более "широкому" знаковому типу. Например, беззнаковые величины размерности байта, получаемые в результате работы аналого-цифрового преобразователя, могут быть успешно сохранены в переменных типа short.

К ссылочным (reference) типам относятся типы классов, интерфейсов и массивов. Переменная подобного типа способна содержать ссылку на объект, относящийся к этому типу.

Каждому типу отвечает набор правил записи соответствующих литералов (literals). В нескольких следующих разделах мы рассмотрим, какие литералы (безымянные константы) могут использоваться для записи значений конкретного типа.

Ссылочные литералы Java

Единственный допустимый ссылочный литерал (reference literal) – это null. Его разрешается использовать в любом контексте, где подразумевается ссылка на объект. В соответствии с принятым соглашением, null выражает тот факт, что объект еще не создан или создан неправильно. Константа null

не относится конкретно ни к одному классу – даже Object, – но может быть присвоена переменной любого ссылочного типа/

Булевы литералы

К булевым литералам (boolean literals) относятся true и false.

Символьные литералы

Символьные литералы (character literals) заключаются в одинарные кавычки (например, ‘Q 1). В состав символьного литерала могут входить любые допустимые символы Unicode. Для представления символов Unicode внутри литералов, как и в других месmax кода, разрешается использовать соответствующие escapeпоследовательности вида \uxxxx. Некоторым специальным символам отвечают такие еsсаре-последовательности.

 

\n    Перевод строки (\u000a)

\t    Табуляция (\u0009)

\b    Backspace (\u0008)

\r    Возврат каретки (\u000d)

\f    Прогон страницы (\u000c)

\\    Обратная косая черта (\u005с)

\’    Одинарная кавычка (\u0027)

\”    Двойная кавычка (\u0022)

\ddd  Символ, представленный восьмеричным числом, где d- цифра из интервала 0-7

 

Константы в восьмеричном представлении могут содержать три или меньше цифр и не должны превышать значения \377 (\u00f).

Целочисленные литералы

Целочисленные литералы (integer literals) представляются в виде, последовательностей восьмеричных, десятичных или шестнадцатеричных цифр. Начало записи числа определяет выбранную систему счисления: если первым введен Символ нуля (О), число задано в восьмеричном виде; любая из начальных пар Символов 0х и 0Х служит признаком шестнадцатеричной записи; во всех остальных случаях речь идет о десятичном числе. Так выглядит одно и то же целое число в различных системах счисления:

29 035 0х1d 0x1d

Целочисленные константы относятся к типу long, если они завершаются символом l или L (например, 29L); суффикс L более предпочтителен, поскольку l (строчную букву L) в тексте легко спутать с единицей (1). При отсутствии суффикса целочисленные константы относятся к типу int. Если литерал int непосредственно присваивается переменной типа short и принадлежит допустимому интервалу изменения значений short, он трактуется как постоянная величина типа short. Аналогичное правило действует при присваивании постоянных типа int переменным типа byte. Во всех остальных случаях при присваивании значений int переменным short или byte следует использовать оператор преобразования типов (обратитесь к разделу 6.8.4 на странице 188).

Числовые литералы с плавающей запятой

Числа с плавающей запятой (floating-point numbers) представляются с помощью десятичных цифр и необязательных символов знака (+ или -), десятичной точки (.) и экспоненты (е или Е). В записи числа должна присутствовать хотя бы одна цифра. Допускается задание суффиксов f или F для обозначения констант одинарной точности (float) и d или D – двойной точности (doublе). Так выглядит одно и то же число с плавающей запятой в различных формах записи:

18. 1.8е1 .18Е2

Числовые литералы с плавающей запятой по умолчанию относятся к типу double, если явно не задан суффикс f или F, который служит признаком типа float (например, 18.0f). Суффикс d или D обозначает факт принадлежности литерала к типу double. Существуют две разновидности нулевого значения – положительный нуль (0.0) и отрицательный нуль (-0.0). Положительное и отрицательное нулевые значения в контексте оператора сравнения == считаются равными, но в некоторых вычислениях способны приводить к различным результатам. Например, результат выражения 1d/0d есть +?, а 1d/-0d – -?. в Java не предусмотрены специальные литералы для представления значений положительной и отрицательной бесконечностей, а также величин, не являющихся прав ильными числами с плавающей запятой, – эту функцию выполняют соответствующие символические константы, определенные в классах Float и Doublе (подробно об этом – в разделах 6.6.2 на странице 174 и 11.1.6 на странице 296).

Константы типа doublе не могут быть непосредственно присвоены переменным типа f1oat, даже если они принадлежат допустимому интервалу изменения значений f1oat. Полям и переменным типа float разрешается напрямую присваивать литералы только того же типа.

Строковые литералы

Строковые литералы (String literals) заключают в двойные кавычки (например, "Это строковый литерал"). Внутри строкового литерала допускается непосредственно использовать любые символы, кроме символа перевода строки. Если символ перевода строки все-таки необходимо поместить в литерал, следует задать еsсаре-последовательность \n. Строковые константы указывают на соответствующие объекты типа String. Более подробная информация о классе String приведена в главе 9.

Символы в строковых литералах разрешено задавать посредством восьмеричной записи, но при этом требуется указывать все три цифры, чтобы избежать возможных недоразумений, как, например, в случае, когда строка "\0116" равноценна "\t6", а "\116" – "N".

Литералы типа class

Каждому типу в Java соответствует определенный объект класса class, который можно адресовать непосредственно, сопровождая наименование типа суффиксом ".class". Например:

String.class

java.lang.String.class

java.util.Iterator.class boolean.class

Два первых. литерала указывают на один и тот же объект Class, поскольку String и Jаvа.lаng.String – это разные наименования одного и того же класса. Третий литерал ссылается на объект типа Class для интерфейса Iterator, который мы упоминали в разделе 4.4.1 на странице 134. В последнем примере представлена ссылка на объект класса Class для простого типа boolean. Более подробная информация об объекmax Class приведена в главе 11.

Источник: Арнолд, Кен, Гослинг, Джеймс, Холмс, Дэвид. Язык программирования Java. 3-е изд .. : Пер. с англ. – М. : Издательский дом «Вильяме», 2001. – 624 с. : ил. – Парал. тит. англ.

По теме:

  • Комментарии