Кен Арнольд Джеймс Гослинг

Вид материалаДокументы

Содержание


5.4.1. Зарезервированные слова Java
5.5. Примитивные типы
Подобный материал:
1   ...   22   23   24   25   26   27   28   29   ...   81

5.4. Идентификаторы


Идентификаторы Java, используемые для именования объявленных в программе величин (переменных и констант) и меток, должны начинаться с буквы, символа подчеркивания (_) или знака доллара ($), за которыми следуют буквы или цифры в произвольном порядке. Многим программистам это покажется знакомым, но в связи с тем, что исходные тексты Java-программ пишутся в кодировке Unicode, понятие “буква” или “цифра” оказывается значительно более широким, чем в большинстве языков программирования. “Буквы” в Java могут представлять собой символы из армянского, корейского, грузинского, индийского и практически любого алфавита, который используется в наше время. Следовательно, наряду с идентификатором kitty можно пользоваться идентификаторами maиka, кошка, , и . /Эти слова означают "кошка" или "котенок" на английском, сербо-хорватском, русском, фарси, тамильском и японском языках соответственно. Если в других языках они имеют иное значение, мы искренне надеемся, что оно не является оскорбительным; в противном случае приносим свои извинения и заверяем, что оскорбление было ненамеренным./ Термины “буква” и “цифра” в Unicode трактуются довольно широко, но если какой-либо символ считается буквой или цифрой в неком языке, то, по всей вероятности, он имеет аналогичный смысл и в Java. Полные определения этих понятий приводятся в таблицах “Цифры Unicode” и “Буквы и цифры Unicode”.

Любые расхождения в символах, входящих в состав идентификаторов, делают два идентификатора различными. Регистр символов имеет значение: и т. д. являются разными идентификаторами. Символы, которые выглядят одинаково или почти одинаково, нетрудно спутать друг с другом. Например, латинская заглавная n (N) и греческая заглавная (N) выглядят практически одинаково, однако им соответствуют разные символы Unicode (\u004e и \u039d соответственно). Единственная возможность избежать ошибок заключается в том, чтобы каждый идентификатор был написан только на одном языке (и, следовательно, включал символы известного набора), чтобы программист мог понять, что вы имеете в виду — E или E. /Одна из этих букв входит в кириллицу, а другая - в ASCII. Отличите одну от другой, и вы получите приз./

Идентификаторы в языке Java могут иметь произвольную длину.

5.4.1. Зарезервированные слова Java


Ключевые слова Java не могут использоваться в качестве идентификаторов. Приведем список ключевых слов Java (слова, помеченные символом *, зарезервированы, но в настоящее время не применяются):

abstract double int super

boolean else interface switch

break extends long synchronized

byte final native this

case finally new throw

catch float package throws

char for private transient*

class goto* protected try

const* if public void

continue implements return volatile

default import short while

do instanceof static


Хотя слова null, true и false внешне похожи на ключевые, формально они относятся к литералам (как, скажем, число 12) и потому отсутствуют в приведенной выше таблице. Тем не менее вы не можете использовать слова null, true и false (как и 12) в качестве идентификаторов, хотя они и могут входить в состав идентификатора. Формально null, true и false не являются ключевыми словами, но к ним относятся те же самые ограничения.

5.5. Примитивные типы


Некоторые зарезервированные слова представляют собой названия типов. В Java предусмотрены следующие примитивные типы:

boolean либо true, либо false

char 16-разрядный символ Unicode 1.1.5

byte 8-разрядное целое со знаком, дополненное по модулю 2

short 16-разрядное целое со знаком, дополненное по модулю 2

int 32-разрядное целое со знаком, дополненное по модулю 2

long 64-разрядное целое со знаком, дополненное по модулю 2

float 32-разрядное число с плавающей точкой (IEEE 7541985)

double 64-разрядное число с плавающей точкой (IEEE 7541985)


Каждому из примитивных типов языка Java, за исключением short и byte, соответствует одноименный класс пакета java.lang. Значения типов short и byte всегда преобразуются в int перед выполнением любых вычислений — приведенный выше формат используется только для хранения, но не для вычислений (см. “Тип выражения”). В классах языка, служащих оболочками для примитивных типов (Boolean, Character, Integer, Long, Float и Double), также определяется ряд полезных констант и методов. Например, в классах-оболочках для некоторых примитивных типов определяются константы MIN_VALUE и MAX_VALUE.

В классах Float и Double определены константы NEGATIVE_INFINITY, POSITIVE_INFINITY и NaN, а также метод isNaN, который проверяет, не является ли значение с плавающей точкой “не-числом” (Not a Number) — то есть результатом неверной операции, вроде деления на ноль. Значение NaN может использоваться для обозначения недопустимого значения, подобно тому как значение null для ссылок не указывает ни на какой конкретный объект. Классы-оболочки подробно рассматриваются в главе 13.