К. Арнольд, Д. Гослинг - Язык программирования Java (1160779), страница 17
Текст из файла (страница 17)
Полные определения этих понятий приводятся в таблицах “Цифры Unicode” и “Буквы ицифры Unicode”.Любые расхождения в символах, входящих в состав идентификаторов, делают два идентификатора различными. Регистр символов имеети т. д. являются разными идентификаторами. Символы, которые выглядят одинаково илизначение:(N) выглядят практическипочти одинаково, нетрудно спутать друг с другом. Например, латинская заглавная n (N) и греческая заглавнаяодинаково, однако им соответствуют разные символы Unicode (\u004e и \u039d соответственно).
Единственная возможность избежатьошибок заключается в том, чтобы каждый идентификатор был написан только на одном языке (и, следовательно, включал символы известногонабора), чтобы программист мог понять, что вы имеете в виду — E или E. /Одна из этих букв входит в кириллицу, а другая - в ASCII. Отличите однуот другой, и вы получите приз./Идентификаторы в языке Java могут иметь произвольную длину.5.4.1. Зарезервированные слова JavaКлючевые слова Java не могут использоваться в качестве идентификаторов. Приведем список ключевых слов Java (слова, помеченные символом*, зарезервированы, но в настоящее время не применяются):abstractbooleanbreakbytecasecatchcharclassconst*continuedefaultdodoubleelseextendsfinalfinallyfloatforgoto*ifimplementsimportinstanceofintinterfacelongnativenewpackageprivateprotectedpublicreturnshortstaticsuperswitchsynchronizedthisthrowthrowstransient*tryvoidvolatilewhileХотя слова null, true и false внешне похожи на ключевые, формально они относятся к литералам (как, скажем, число 12) и потому отсутствуют вприведенной выше таблице.
Тем не менее вы не можете использовать слова null, true и false (как и 12) в качестве идентификаторов, хотя они имогут входить в состав идентификатора. Формально null, true и false не являются ключевыми словами, но к ним относятся те же самыеограничения.5.5. Примитивные типыНекоторые зарезервированные слова представляют собой названия типов. В Java предусмотрены следующие примитивные типы:booleancharbyteshortintlongfloatdoubleлибо true, либо false16-разрядный символ Unicode 1.1.58-разрядное целое со знаком, дополненное по модулю 216-разрядное целое со знаком, дополненное по модулю 232-разрядное целое со знаком, дополненное по модулю 264-разрядное целое со знаком, дополненное по модулю 232-разрядное число с плавающей точкой (IEEE 7541985)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.5.6. ЛитералыДля каждого типа Java определяется понятие литералов, которые представляют собой постоянные значения данного типа. Несколькоследующих подразделов описывают способы записи литералов (неименованных констант) в каждом из типов.5.6.1.
Ссылки на объектыДля ссылок на объекты существует всего один литерал — null. Он может находиться всюду, где допускается использование ссылки. Чаще всегоnull представляет ссылку на недопустимый или несуществующий объект. null не относится ни к одному типу, даже к типу Object.5.6.2. Логические значенияВ типе boolean имеются два литерала — true и false.5.6.3.
Целые значенияЦелые константы являются последовательностями восьмеричных, десятичных или шестнадцатеричных цифр. Начало константы определяетоснование системы счисления: 0 (ноль) обозначает восьмеричное число (основание 8); 0x или 0X обозначает шестнадцатеричное число(основание 16); любой другой набор цифр указывает на десятичное число (основание 10). Следующие числа имеют одинаковое значение:29 035 0x1D 0X1dЦелые константы относятся к типу long, если они заканчиваются символом L или l, как 29L; желательно пользоваться L, потому что l легко спутатьс 1 (цифрой один). В противном случае считается, что целая константа относится к типу int.
Если литерал типа int непосредственно присваиваетсяпеременной типа short или byte и его значение находится в пределах диапазона допустимых значений для типа переменной, то операции слитералом осуществляются так, словно он относится к типу short или byte соответственно.5.6.4. Значения с плавающей точкойЧисло с плавающей точкой представляется в виде десятичного числа с необязательной десятичной точкой, за которым (также необязательно)может следовать порядок.
Число должно содержать как минимум одну цифру. В конце числа может стоять символ F или f для обозначенияконстанты с одинарной точностью или же символ d или D для обозначения константы с двойной точностью. Следующие литералы обозначаютодно и то же значение:18. 1.8e1 .18E2Константы с плавающей точкой относятся к типу double, если только они не завершаются символом f или F — в этом случае они имеют тип float,как константа 18.0f. Завершающий символ D или d определяет константу типа double. Ноль может быть положительным (0.0) или отрицательным (0.0). Положительный ноль равен отрицательному, но при использовании в некоторых выражениях они могут приводить к различнымрезультатам.
Например, выражение 1d/0d равно +, а 1d/-0d равно –.Константа типа double не может присваиваться переменной типа float, даже если ее значение лежит в пределах диапазона float. Дляприсваивания значений переменным и полям типа float следует использовать константы типа float или привести double к float.5.6.5. СимволыСимвольные литералы заключаются в апострофы — например, ‘Q’. Некоторые служебные символы могут представляться в виде escapeпоследовательностей. К их числу относятся:\n переход на новую строку (\u000A)\t табуляция (\u0009)\b забой (\u0008)\r ввод (\u000D)\f подача листа (\u000C)\\ обратная косая черта (\u005C)\’ апостроф (\u0027)\" кавычка (\u0022)\ddd символ в восьмеричном представлении, где каждое d соответствует цифре от 0 до 7Восьмеричные символьные константы могут состоять из трех или менее цифр и не могут превышать значения \377 (\u00ff). Символы,представленные в шестнадцатеричном виде, всегда должны состоять из четырех цифр.5.6.6.
СтрокиСтроковые литералы заключаются в двойные кавычки: “along”. В них могут входить любые escape-последовательности, допустимые в символьныхконстантах. Строковые литералы являются объектами типа String. Более подробно о строках рассказывается в главе 8.Символы перехода на новую строку не могут находиться в середине строковых литералов. Если вы хотите вставить такой символ в строку,воспользуйтесь escape-последовательностью \n.В строках может применяться восьмеричная запись символов, но для предотвращения путаницы (в тех случаях, когда символы, представленныетаким образом, соседствуют с другими символами) необходимо указывать все три восьмеричные цифры.
Например, строка “\0116" эквивалентнастроке ”\t6", тогда как строка “\116" эквивалентна ”N".5.7. Объявления переменныхВ объявлении указывается тип, уровень доступа и другие атрибуты идентификатора. Объявление состоит из трех частей: сначала приводитсясписок модификаторов, за ним следует тип, и в завершение следует список идентификаторов.Модификаторы могут отсутствовать в объявлении переменной. Модификатор static объявляет, что переменная сохраняет свое значение послевыхода из метода; модификатор final объявляет, что значение переменной присваивается всего один раз, при ее инициализации. Модификаторfinal может использоваться только для полей.Тип в объявлении указывает на то, какие значения могут принимать объявляемые величины и как они должны себя вести.Между объявлением переменной по отдельности или одновременно с несколькими другими переменными нет никаких различий.
Например,объявление:float[] x, y;равносильноfloat[] x;float[] y;Объявления могут находиться в произвольном месте исходного текста программы. Вы не обязаны ставить их в начале класса, метода или блока. Вобщем случае, идентификатором можно пользоваться в любой момент после его объявления в некотором блоке (см. раздел “Операторы иблоки”), за одним исключением: нестатические поля недоступны в статических методах.Поля с модификатором final должны инициализироваться при объявлении.Объявлению члена класса может предшествовать один из нескольких модификаторов. Модификаторы могут следовать в произвольном порядке,но мы рекомендуем выработать некоторое соглашение и придерживаться его.