» Язык
java
» Главная
страница
» Вернуться
к содержанию
Лексические
основы
Теперь,
когда мы подробно рассмотрели
минимальный Java-класс, давайте
вернемся назад и рассмотрим
общие аспекты синтаксиса этого
языка. Программы на Java — это
набор пробелов, комментариев,
ключевых слов, идентификаторов,
литеральных констант, операторов
и разделителей.
Пробелы
Java
— язык, который допускает произвольное
форматирование текста программ.
Для того, чтобы программа работала
нормально, нет никакой необходимости
выравнивать ее текст специальным
образом. Например, класс HelloWorld
можно было записать в двух строках
или любым другим способом, который
придется вам по душе. И он будет
работать точно так же при условии,
что между отдельными лексемами
(между которыми нет операторов
или разделителей) имеется по
крайней мере по одному пробелу,
символу табуляции или символу
перевода строки.
Комментарии
Хотя
комментарии никак не влияют
на исполняемый код программы,
при правильном использовании
они оказываются весьма существенной
частью исходного текста. Существует
три разновидности комментариев:
комментарии в одной строке,
комментарии в нескольких строках
и, наконец, комментарии для
документирования. Комментарии,
занимающие одну строку, начинаются
с символов // и заканчиваются
в конце строки. Такой стиль
комментирования полезен для
размещения кратких пояснений
к отдельным строкам кода:
а
= 42; // если 42 — ответ, то
каков же был вопрос?
Для
более подробных пояснений вы
можете воспользоваться комментариями,
размещенными на нескольких строках,
начав текст комментариев символами
/* и закончив символами */.
При этом весь текст между этими
парами символов будет расценен
как комментарий и транслятор
его проигнорирует.
/*
*
Этот код несколько замысловат...
*
Попробую объяснить:
*
….
*/
Третья,
особая форма комментариев, предназначена
для сервисной программы javadoc,
которая использует компоненты
Java-транслятора для автоматической
генерации документации по интерфейсам
классов. Соглашение, используемое
для комментариев этого вида,
таково: для того, чтобы разместить
перед объявлением открытого
(public) класса, метода или
переменной документирующий комментарий,
нужно начать его с символов
/** (косая черта и две звездочки).
Заканчивается такой комментарий
точно так же, как и обычный
комментарий — символами */.
Программа javadoc умеет различать
в документирующих комментариях
некоторые специальные переменные,
имена которых начинаются с символа
@. Вот пример такого комментария:
/**
*
Этот класс умеет делать замечательные
вещи. Советуем * всякому, кто
захочет написать еще более совершенный
класс, * взять его в качестве
базового.
*
@see Java. applet. Applet
*
©author Patrick Naughton
*
@version 1. 2
*/
class
CoolApplet extends Applet {
/**
*
У этого метода два параметра:
*
@param key — это имя параметра.
*
@param value — это значение
параметра с именем key.
*/
void put (String key, Object
value) {
Зарезервированные
ключевые слова
Зарезервированные
ключевые слова — это специальные
идентификаторы, которые в языке
Java используются для того,
чтобы идентифицировать встроенные
типы, модификаторы и средства
управления выполнением программы.
Эти ключевые слова совместно
с синтаксисом операторов и разделителей
входят в описание языка Java.
Они могут применяться только
по назначению, их нельзя использовать
в качестве идентификаторов для
имен переменных, классов или
методов. На сегодняшний день
в языке Java имеется 59 зарезервированных
слов:
break
|
boolean
|
abstract
|
|
|
|
|
do
|
const
|
class
|
cast
|
case
|
byvalue
|
byte
|
future
|
for
|
instanceof
|
catch
|
true
|
double
|
else
|
final
|
native
|
syncronized
|
false
|
goto
|
extends
|
try
|
generic
|
if
|
implements
|
import
|
inner
|
finally
|
int
|
interface
|
long
|
continue
|
new
|
null
|
operator
|
outer
|
package
|
private
|
protected
|
public
|
rest
|
return
|
short
|
static
|
super
|
default
|
switch
|
this
|
throw
|
throws
|
transient
|
float
|
char
|
var
|
void
|
volatile
|
while
|
Отметим,
что слова byvalue, cast, const,
future, generic, goto, inner,
operator, outer, rest, var зарезервированы
в Java, но пока не используются.
Кроме этого, в Java есть зарезервированные
имена методов (эти методы наследуются
каждым классом, их нельзя использовать,
за исключением случаев явного
переопределения методов класса
Object).
Зарезервированные
имена методов Java
clone
|
equals
|
finalize
|
getClass
|
hashCode
|
notify
|
notifyAll
|
toString
|
wait
|
Идентификаторы
Идентификаторы
используются для именования
классов, методов и переменных.
В качестве идентификатора может
использоваться любая последовательность
строчных и прописных букв, цифр
и символов _ (подчеркивание)
и $ (доллар). Идентификаторы
не должны начинаться с цифры,
чтобы транслятор не перепутал
их с числовыми литеральными
константами. Java — язык, чувствительный
к регистру букв. Это означает,
что, к примеру, Value и VALUE
— различные идентификаторы.
Литералы
Константы
в Java задаются их литеральным
представлением. Целые числа,
числа с плавающей точкой, логические
значения, символы и строки можно
располагать в любом месте исходного
кода.
Целые
литералы
Целые
числа — это тип, используемый
в обычных программах наиболее
часто. Любое целочисленное значение,
например, 1, 2, 3, 42 — это
целый литерал. В данном примере
приведены десятичные числа,
то есть, числа с основанием
10 — именно те, которые мы повседневно
используем вне мира компьютеров.
Кроме десятичных, в качестве
целых литералов могут использоваться
также числа с основанием 8 и
16 — восьмеричные и шестнадцатеричные.
Java распознает восьмеричные
числа по стоящему впереди нулю.
Нормальные десятичные числа
не могут начинаться с нуля,
так что использование в программе
внешне допустимого числа 09
приведет к сообщению об ошибке
при трансляции, поскольку 9
не входит в диапазон 0…7, допустимый
для знаков восьмеричного числа.
Шестнадцатеричная константа
различается по стоящим впереди
символам нуль-х (0х или 0Х).
Диапазон значений шестнадцатеричной
цифры — 0…15, причем в качестве
цифр для значений 10…15 используются
буквы от А до F (или от а до
f). С помощью шестнадцатеричных
чисел вы можете в краткой и
ясной форме представить значения,
ориентированные на использование
в компьютере, например, написав
Oxffff вместо 65535.
Целые
литералы являются значениями
типа int, которое в Java хранится
в 32-битовом слове. Если вам
требуется значение, которое
по модулю больше, чем приблизительно
2 миллиарда, необходимо воспользоваться
константой типа long. При этом
число будет храниться в 64-битовом
слове. К числам с любым из названных
выше оснований вы можете приписать
справа строчную или прописную
букву L, указав таким образом,
что данное число относится к
типу long. Например, Ox7ffffffffffffffL
или 9223372036854775807L — это
значение, наибольшее для числа
типа long.
Литералы
с плавающей точкой
Числа
с плавающей точкой представляют
десятичные значения, у которых
есть дробная часть. Их можно
записывать либо в обычном, либо
экспоненциальном форматах. В
обычном формате число состоит
из некоторого количества десятичных
цифр, стоящей после них десятичной
точки, и следующих за ней десятичных
цифр дробной части. Например,
2.0, 3.14159 и .6667 — это допустимые
значения чисел с плавающей точкой,
записанных в стандартном формате.
В экспоненциальном формате после
перечисленных элементов дополнительно
указывается десятичный порядок.
Порядок определяется положительным
или отрицательным десятичным
числом, следующим за символом
Е или е. Примеры чисел в экспоненциальном
формате: 6.022е23, 314159Е-05,
2е+100. В Java числа с плавающей
точкой по умолчанию рассматриваются,
как значения типа double. Если
вам требуется константа типа
float, справа к литералу надо
приписать символ F или f. Если
вы любитель избыточных определений
— можете добавлять к литералам
типа double символ D или d.
Значения используемого по умолчанию
типа double хранятся в 64-битовом
слове, менее точные значения
типа float — в 32-битовых.
Логические
литералы
У
логической переменной может
быть лишь два значения — true
(истина) и false (ложь). Логические
значения true и false не преобразуются
ни в какое числовое представление.
Ключевое слово true в Java не
равно 1, a false не равно 0.
В Java эти значения могут присваиваться
только переменным типа boolean
либо использоваться в выражениях
с логическими операторами.
Символьные
литералы
Символы
в Java — это индексы в таблице
символов UNICODE. Они представляют
собой 16-битовые значения, которые
можно преобразовать в целые
числа и к которым можно применять
операторы целочисленной арифметики,
например, операторы сложения
и вычитания. Символьные литералы
помещаются внутри пары апострофов
(' '). Все видимые символы таблицы
ASCII можно прямо вставлять
внутрь пары апострофов: — 'a',
'z', '@'. Для символов, которые
невозможно ввести непосредственно,
предусмотрено несколько управляющих
последовательностей.
Управляющая
последовательность Описание
\
ddd Восьмеричный символ (ddd)
\
uxxxx Шестнадцатеричный символ
UNICODE (xxxx)
\
' Апостроф
\
" Кавычка
\
\ Обратная косая черта
\
r Возврат каретки (carriage
return)
\
¦ Перевод строки (line feed,
new line)
\
f Перевод страницы (form feed)
\
t Горизонтальная табуляция (tab)
\
b Возврат на шаг (backspace)
Строчные
литералы
Строчные
литералы в Java выглядят точно
также, как и во многих других
языках — это произвольный текст,
заключенный в пару двойных кавычек
(""). Хотя строчные
литералы в Java реализованы
весьма своеобразно (Java создает
объект для каждой строки), внешне
это никак не проявляется. Примеры
строчных литералов:
“Hello
World!”;
"две\
строки; \ А это в кавычках\
"".
Все
управляющие последовательности,
восьмеричные и шестнадцатеричные
формы записи, которые определены
для символьных литералов, работают
точно так же и в строках. Строчные
литералы в Java должны начинаться
и заканчиваться в одной и той
же строке исходного кода. В
этом языке, в отличие от многих
других, нет управляющей последовательности
для продолжения строкового литерала
на новой строке.
Операторы
Оператор
— это нечто, выполняющее некоторое
действие над одним или двумя
аргументами и выдающее результат.
Синтаксически операторы чаще
всего размещаются между идентификаторами
и литералами.
Операторы
языка Java
^=
|
&
|
&=
|
%
|
%=
|
>
|
>=
|
<
|
<=
|
!
|
!=
|
++
|
--
|
>>
|
>>=
|
<<
|
<<=
|
>>>
|
>>>=
|
&&
|
+=
|
-
|
-=
|
*
|
*=
|
/
|
/=
|
|
|
|=
|
^
|
|
|
|
==
|
=
|
~
|
?:
|
instanceof
[
]
Разделители
Лишь
несколько групп символов, которые
могут появляться в синтаксически
правильной Java-программе, все
еще остались неназванными. Это
— простые разделители, которые
влияют на внешний вид и функциональность
программного кода.
(
) круглые скобки
Выделяют
списки параметров в объявлении
и вызове метода, также используются
для задания приоритета операций
в выражениях, выделения выражений
в операторах управления выполнением
программы, и в операторах приведения
типов.
{
} фигурные скобки
Содержат
значения автоматически инициализируемых
массивов, также используются
для ограничения блока кода в
классах, методах и локальных
областях видимости.
[
] квадратные скобки
Используются
в объявлениях массивов и при
доступе к отдельным элементам
массива.
;
точка с запятой
Разделяет
операторы.
,
запятая
Разделяет
идентификаторы в объявлениях
переменных, также используется
для связи операторов в заголовке
цикла for.
.
точка
Отделяет
имена пакетов от имен подпакетов
и классов, также используется
для отделения имени переменной
или метода от имени переменной.
Следующий
урок
|