Университет | Отделение прикладной математики | Компьютерные дела | Следующая страница


Спецификация языка Ява

Джеймс Гослинг
Билл Джой
Гай Стил

Версия 1.0

Обложка

Перевод с английского М.Батрак, С.Болтухова, И.Бураковой, Е.Гречниковой, Д.Касимовой, В.Лешукова, Т.Морозовой, Е.Ожогина, Т.Сушниковой, С.Щепеткина

Редактор С.Щепеткин

Под общей редакцией С.Свердлова


© Перевод на русский язык, М.Батрак, С.Болтухов, И.Буракова, Е.Гречникова, Д.Касимова, В.Лешуков, Т.Морозова, Е.Ожогин, С.Свердлов, Т.Сушникова, С.Щепеткин, 1999

Все права защищены. Публикация настоящего перевода в какой-либо форме (в том числе размещение в Интернет) без письменного разрешения авторов перевода не допускается.

По вопросам публикации обращаться по адресу c3c@uni-vologda.ac.ru

Rambler's Top100


От редактора

Идея перевода спецификации языка Ява возникла в 1997 году. Этому было несколько причин. Во-первых, в то время в нашем распоряжении не было ни одной книги по Яве на русском языке и мы не надеялись, что солидные руководства подобного рода вообще будут опубликованы по-русски в обозримом будущем. Прогноз этот вполне оправдался. Во-вторых, студентам отделения прикладной математики, которые выступили в роли переводчиков, было важно приобрести практику в англо-русском переводе компьютерных текстов.

Предлагаемый вашему вниманию перевод неполон. Имеется ряд пропусков, которые никак не отмечены. Если найдутся силы и возможности, мы, как минимум, отметим эти пропуски, а может, и устраним их. Кроме того, мы не стали переводить вторую часть книги, содержащую описание стандартных пакетов.

Перевод прошел несколько этапов редактирования, но в нынешнем своем виде все же представляет собою скорее полуфабрикат. Мы знаем, что качество перевода некоторых мест оставляет желать лучшего. Но другого пока нет. Наш перевод - это в значительной мере ученическая работа. Мы с удовольствием примем конструктивную критику в таких, например, формах: "Этот фрагмент (пункт такой-то) (здесь следует текст английского оригинала) я бы перевел так: (здесь предлагаемый вами вариант)".

Английский оригинал "The Java Language Specification" доступен по адресу: http://www.javasoft.com/docs/books/jls/

С. Свердлов
4.01.99
Вологда

c3c@uni-vologda.ac.ru
www.uni-vologda.ac.ru


Содержание.

        1.1 Примеры программ
        1.2 Ссылки

ГЛАВА 2 Грамматики

         2.1 Контекстно-свободные грамматики
         2.2 Лексическая грамматика
         2.3 Синтаксическая грамматика
         2.4 Грамматическая нотация

ГЛАВА 3 Лексическая структура

3.1 Unicode
3.2 Лексическая трансляция
3.3 Unicode-последовательности
3.4 Ограничители строк
3.5 Элементы ввода и лексемы
3.6 Незначащие символы
3.7 Комментарии
3.8 Идентификаторы
3.9 Ключевые слова
3.10 Литералы
    3.10.1 Целые литералы
    3.10.2 Вещественные литералы
    3.10.3 Логические литералы
    3.10.4 Символьные литералы
    3.10.5 Строковые литералы
    3.10.6 Unicode-последовательности для символьных и строковых литералов
    3.10.7 Null-литерал
3.11 Разделители
3.12 Операции

ГЛАВА 4 Типы, значения и переменные

4.1 Виды типов и значений
4.2 Примитивные типы и значения
    4.2.1 Целочисленные типы и значения
    4.2.2 Целочисленные операции
    4.2.3 Вещественные типы и значения
    4.2.4 Вещественные операции
    4.2.5 Логический тип boolean и логические значения
4.3 Ссылочные типы и значения
    4.3.1 Объекты
    4.3.2 Класс Object
    4.3.3 Класс String
    4.3.4 Когда ссылочные типы одинаковы
4.4 Где используются типы
4.5 Переменные
    4.5.1 Переменные примитивного типа
    4.5.2 Переменные ссылочного типа
    4.5.3 Виды переменных
    4.5.4 Начальные значения переменных
    4.5.5 Типы переменных и классы объектов

ГЛАВА 5 Преобразования и расширения

5.1 Виды преобразования
    5.1.1 Тождественное преобразование
    5.1.2 Расширяющее примитивное преобразование
    5.1.3 Сужающие примитивные преобразования
    5.1.4 Расширяющие ссылочные преобразования
    5.1.5 Сужающие ссылочные преобразования
    5.1.6 Строковые преобразования
    5.1.7 Запрещенные преобразования
5.2 Преобразование присваивания
5.3 Преобразование вызова метода
5.4 Строковое преобразование
5.5 Преобразование приведения
5.6 Числовое расширение
    5.6.1 Одноместное числовое расширение
    5.6.2 Двуместное числовое расширение

ГЛАВА 6 Имена

6.1 Объявления
6.2 Имена и идентификаторы
6.3 Область действия простого имени
    6.3.1 Скрытые имена
6.4 Члены и наследование
    6.4.1 Члены пакета
    6.4.2 Члены классового типа
    6.4.3 Члены интерфейсного типа
    6.4.4 Члены типа-массив
6.5 Определение значения имени
    6.5.1 Синтаксическая классификация имени согласно контексту
    6.5.2 Переклассификация контекстно-неоднозначных имен
    6.5.3 Значение имен пакетов
        6.5.3.1 Простые имена пакетов
        6.5.3.2 Составные имена пакетов
    6.5.4 Значение имен типов
        6.5.4.1 Простые имена типов
        6.5.4.2 Составные имена типов
    6.5.5 Значение имен выражения
        6.5.5.1 Простые имена выражения
        6.5.5.2 Квалифицированные имена выражения
    6.5.6 Значение имен методов
        6.5.6.1 Простые имена методов
        6.5.6.2 Квалифицированные имена методов
6.6 Квалифицированные имена и управление доступом
    6.6.1 Определение доступа
    6.6.2 Модификатор доступа protected
    6.6.3 Пример управления доступом
    6.6.4 Пример: доступ к классам с модификаторами public и с модификаторами, не             являющимися public
    6.6.5 Пример: поля, методы и конструкторы c доступом по умолчанию
    6.6.6 Пример: поля, методы и конструкторы с модификатором public
    6.6.7 Пример: поля, методы, и конструкторы с типом доступа protected
    6.6.8 Пример: поля, методы, и конструкторы с типом доступа private
6.7 Полностью определенные имена
6.8 Соглашения по именования
    6.8.1 Имена пакетов
    6.8.2 Имена классовых и интерфейсных типов.
    6.8.3 Имена методов.
    6.8.4 Имена полей.
    6.8.5 Имена констант.
    6.8.6 Локальная переменная и имена параметра.

ГЛАВА 7 Пакеты

7.1 Члены пакета
7.2 Базовая система для пакетов
    7.2.1 Хранение пакетов в файловой системе
    7.2.2 Хранение пакетов в базе данных
7.3 Модули компиляции
7.4 Объявления пакета
    7.4.1 Именованные пакеты
    7.4.2 Неименованные пакеты
    7.4.3 Область действия и скрытие имени пакета
    7.4.4 Доступ к членам пакета
7.5 Объявление импорта
    7.5.1 Объявление одиночного импорта типа
    7.5.2 Объявление импорта типа по шаблону
    7.5.3 Импорт по умолчанию
    7.5.4 Странный пример
7.6 Объявления типа
7.7 Уникальные имена пакетов

ГЛАВА 8

    8.1.5 Тело класса и объявления членов
8.2 Члены класса
    8.2.1 Примеры наследования
        8.2.1.1 Пример: Наследование с заданным по умолчанию доступом
        8.2.1.2 Наследование с public и protected
        8.2.1.3 Наследование с private
        8.2.1.4 Доступ к членам недоступных классов
8.3 Объявления полей
    8.3.1 Модификаторы поля
        8.3.1.1 Статические поля
        8.3.1.2 Поля final
        8.3.1.3 Переходные поля
        8.3.1.4 Поля volatile
    8.3.2 Инициализация полей
        8.3.2.1 Инициализаторы для переменных класса
        8.3.2.2 Инициализаторы переменных экземпляров
    8.3.3 Примеры объявлений полей
        8.3.3.1 Пример: Скрытие переменных класса
        8.3.3.2 Пример: Скрытие переменных экземпляра
        8.3.3.3 Пример: Множественное наследование полей
        8.3.3.4 Пример: Перенаследование полей
8.4 Объявления метода
    8.4.1 Формальные параметры
    8.4.2 Сигнатура метода
    8.4.3 Модификаторы метода
        8.4.3.1 Методы abstract.
        8.4.3.2 Методы static
        8.4.3.3 Методы final
        8.4.3.4 Методы native
    8.4.4 Метод throws
    8.4.5 Tело метода
    8.4.6 Наследование, замещение и сокрытие.
        8.4.6.3 Требования к замещению и сокрытию.
        8.4.6.4 Наследование методов с той же самой сигнатурой.
    8.4.7 Перегрузка
    8.4.8 Примеры объявлений метода
        8.4.8.1 Пример: замещение
        8.4.8.2 Пример: Перегрузка, замещение и сокрытие
        8.4.8.3 Пример: некорректного замещения
        8.4.8.4 Пример: замещение против сокрытия
        8.4.8.5 Пример: Вызов скрытых методов класса
        8.4.8.6 Большой пример замещения.
        8.4.8.7 Пример: Некорректное замещение при использовании Trows.
8.5 Статические инициализаторы
8.6 Объявление конструктора
    8.6.1 Формальные параметры
    8.6.2 Сигнатура конструктора
    8.6.3 Модификаторы конструктора
    8.6.4 Конструктор Throws
    8.6.5 Тело конструктора
    8.6.6 Перегрузка конструктора
    8.6.7 Конструктор по умолчанию
    8.6.8 Предотвращение создания экземпляров класса

ГЛАВА 9 Интерфейсы

9.1 Объявление интерфейса
    9.1.1 Область действия имени интерфейсного типа
    9.1.2 Модификаторы интерфейса
        9.1.2.1 Абстрактные интерфейсы
    9.1.3 Суперинтерфейсы
    9.1.4 Тело интерфейса и объявление членов
    9.1.5 Доступ к именам членов интерфейса
9.2 Члены интерфейса
9.3 Объявление (константного) поля
    9.3.1 Инициализация полей в интерфейсах
    9.3.2 Примеры объявлений поля
        9.3.2.1 Неоднозначные унаследованные поля
        9.3.2.2 Множественное наследование полей
9.4 Объявления абстрактных методов
    9.4.1 Наследование и замещение
    9.4.2 Перегрузка
    9.4.3 Примеры объявления абстрактных методов
        9.4.3.1 Пример: замещения
        9.4.3.2 Пример: Перегрузка

ГЛАВА 10 Массивы

10.1 Типы массива
10.2 Переменные-массивы
10.3 Создание массива
10.4 Доступ к массиву
10.5 Массивы: простой пример
10.6 Инициализаторы массивов
10.7 Члены массива
10.8 Объекты Class для массивов
10.9 Массив символов - не String
10.10 Исключение сохранения массива

ГЛАВА 11 Исключения

11.1 Причины исключений
11.2 Проверка исключений времени компиляции
    11.2.1 Почему ошибки не контролируются
    11.2.2 Почему не контролируются исключения времени выполнения
11.3 Обработка исключения
    11.3.1 Исключения точны
    11.3.2 Обработка асинхронных исключений
11.4 Примеры исключений
11.5 Иерархия исключений
    11.5.1 Классы Exception и RuntimeException
        11.5.1.1 Стандартные исключения времени выполнения
        11.5.1.2 Стандартные проверяемые исключения
    11.5.2 Класс Error
        11.5.2.1 Ошибки загрузки и компоновки
        11.5.2.2 Ошибки виртуальной машины

ГЛАВА 12 Выполнение

12.1 Запуск виртуальной машины
    12.1.1 Загрузка класса Test
    12.1.2 Компоновка класса Test: проверка, подготовка, (необязательное) разрешение
    12.1.3 Инициализация класса Test: выполнение инициализаторов
    12.1.4 Вызов Test.main
12.2 Загрузка классов и интерфейсов
    12.2.1 Процесс загрузки
    12.2.2 Загрузка: замечания для генерации кода
12.3 Компоновка классов и интерфейсов
    12.3.1 Проверка двоичного представления
    12.3.2 Подготовка классового или интерфейсного типа
    12.3.3 Разрешение символических ссылок
    12.3.4 Компоновка: замечания для генерации кода
12.4 Инициализация классов и интерфейсов
    12.4.2 Детализированная процедура инициализации
    12.4.3 Инициализация: замечания для генерации кода
12.5 Создание новых экземпляров класса
12.6 Финализация элементов класса
    12.6.1 Реализация финализации
    12.6.2 Вызовы финализаторов не упорядочены.
12.7 Финализация классов
12.8 Выгрузка классов и интерфейсов
12.9 Завершение работы виртуальной машины

ГЛАВА 13 Двоичная совместимость

13.1 Форма двоичного Ява-файла
13.2 Что является двоичной совместимостью, а что нет
13.3 Развитие пакетов
13.4 Развитие классов
    13.4.1 Абстрактные классы
    13.4.2 Классы final
    13.4.3 Классы public
    13.4.4 Суперклассы и суперинтерфейсы
    13.4.5 Тело класса и объявления членов класса
    13.4.6 Доступ к членам класса и конструкторам
    13.4.7 Объявления поля
    13.4.8 Поля и Константы final
    13.4.9 Поля static
    13.4.10 Поля transient
    13.4.11 Поля volatile
    13.4.12 Описания метода и конструктора
    13.4.13 Параметры метода и конструктора
    13.4.14 Тип результата метода
    13.4.15 Методы abstract
    13.4.16 Методы final
    13.4.17 Методы native
    13.4.18 Методы static
    13.4.19 Методы synchronized
    13.4.20 Throws метода и конструктора
    13.4.21 Тело метода и конструктора
    13.4.22 Перегрузка метода и конструктора
    13.4.23 Замещение метода
    13.4.24 Статические инициализаторы
13.5 Развитие интерфейсов
    13.5.1 Интерфейсы public
    13.5.2 Суперинтерфейсы
    13.5.3 Члены интерфейса
    13.5.4 Описания полей
    13.5.5 Описания абстрактных методов

ГЛАВА 14 Блоки и операторы

14.1 Нормальное и преждевременное завершение операторов
14.2 Блоки
14.3 Операторы описания локальной переменной
    14.3.1 Типы и описатели локальной переменной
    14.3.2 Область действия описаний локальной переменной
    14.3.3 Сокрытие имен локальными переменными
    14.3.4 Выполнение объявлений локальных переменных
14.4 Операторы
14.5 Пустой оператор
14.6 Помеченные операторы
14.7 Операторы-выражения
14.8 Оператор if
    14.8.1 Оператор if-then
    14.8.2 Оператор if-then-else
14.9 Оператор switch
14.10 Оператор while
    14.10.1 Преждевременное завершение
14.11 Оператор do
    14.11.1 Преждевременное завершение
    14.11.2 Пример оператора do
14.12 Оператор for
    14.12.1 Инициализация оператора for
    14.12.2 Итерация оператора for
    14.12.3 Преждевременное завершение оператора for
14.13 Оператор break
14.14 Оператор continue
14.15 Оператор return
14.16 Оператор throw
14.17 Оператор synchronized
14.18 Оператор try
    14.18.1 Выполнение try-catch
    14.18.2 Выполнение try-catch-finally
14.19 Недостижимые операторы

ГЛАВА 15 Выражения

15.1 Вычисление, обозначение и результат
15.2 Переменные как значения
15.3 Тип выражения
15.4 Выражения и проверки времени выполнения
15.5 Нормальное и преждевременное завершение вычислений
15.9 Выражения создания массива
    15.9.1 Вычисление выражений создания массива времени выполнения
    15.9.2 Пример: порядок вычисления выражения создания массива
    15.9.3 Пример: создание массива и обнаружение переполнения памяти
15.10 Выражения доступа к полю
    15.10.1 Доступ к полю с использованием первичного выражения
    15.10.2 Вызов элементов суперкласса с использованием зарезервированного слова super
15.11 Выражения вызова метода
    15.11.1 Первый шаг при компиляции: определение класса или интерфейса для поиска
        15.11.4.4 Определение вызываемого метода
        15.11.4.5 Создание фрейма, синхронизация, передача управления
        15.11.4.6 Замечание о реализации: комбинированные фреймы
        15.11.4.7 Пример: целевая ссылка и статические методы
        15.11.4.8 Пример: порядок вычисления
        15.11.4.9 Пример: замещение
        15.11.4.10 Пример: вызов метода с использованием super
15.12 Выражения доступа к массиву
    15.12.1 Вычисление доступа к массиву во время выполнения
    15.12.2 Примеры: порядок вычисления доступа к массиву
15.13 Постфиксные выражения
    15.13.1 Имена
    15.13.2 Постфиксная операция инкремента ++
    15.13.3 Постфиксная операция декремента --
    15.14.1 Префиксная операция инкремента ++
    15.14.2 Префиксная операция декремента --
    15.14.3 Унарная операция плюс +
    15.14.4 Унарная операция минус -
    15.14.6 Логическая операция дополнения !
15.15 Выражения приведения
15.16 Мультипликативные операции
    15.16.1 Операция умножения *
    15.16.2 Операция деления /
    15.16.3 Операция остатка %
15.17 Аддитивные операции
        15.17.1.1 Строковое преобразование
        15.17.1.2 Оптимизация конкатенации строк
        15.17.1.3 Примеры конкатенации строк
    15.17.2 Аддитивные операции (+ и -) для числовых типов
15.18 Операции сдвига
15.19 Операции отношения
    15.19.1 Числовые операции сравнения <, < =, >, и > =
    15.19.2 Тип операции сравнения instanceof
15.20 Операции равенства
    15.20.1 Числовые операции равенства == и !=
    15.20.2 Булевы операции равенства == и !=
    15.20.3 Ссылочные операции равенства == и !=
15.21 Поразрядные и логические операции
    15.21.1 Целочисленные поразрядные операции &, ^, и |
15.22 Операция условное И &&
15.23 Операция условного ИЛИ ||
15.24 Условная операция ?:
    15.25.1 Простая операция присваивания =
    15.25.2 Составные операции присваивания
15.26 Выражение
15.27 Константное выражение

ГЛАВА 17 Потоки и замки

17.1 Терминология и структура
17.2 Порядок выполнения
17.3 Правила относительно переменных
17.4 Неатомарная обработка double и long
17.5 Правила относительно замков
17.6 Правила относительно взаимодействия замков и переменных
17.7 Правила для переменных
17.8 Опережающие действия сохранять
17.9 Обсуждение
17.10 Пример: возможный обмен
17.11 Пример: нестандартных написаний
17.12 Потоки
17.14 Наборы задержек и уведомления

ГЛАВА 18 Комментарии документации

18.1 Текст комментария документации
18.2 HTML в комментарии документации
18.3 Обобщающее предложение и общее описание.
18.4 Помеченные абзацы
    18.4.1 Тег @see
    18.4.2 Тег @author
    18.4.3 Тег @version
    18.4.4 Тег @param


Университет | Отделение прикладной математики | Компьютерные дела | Следующая страница