Java SE 8
Программирование на Java SE 8.
Джеймс Гослинг Билл Джой Гай Л. Стил Гилад Брача Алекс Бакли «Язык программирования Java SE 8. Подробное описание» Вильямс, 2015 год, 672 стр. 5-е изд. (29,7 мб. djvu)
В книге по программированию на Java SE 8 ( Java 8 Standard Edition( основное, базовое издание) подробно рассматривается лексика языка программирования Java: типы- примитивные, ссылочные и специальный тип выражения null,числовые, битовые и строковые литералы, разные типы и значения операций и другие значения и выражения лексической и синтаксической грамматики.
По сравнению с версией Java SE 7 вышедшей в 2011 году, в Java 8 добавлены новые возможности — полная поддержка специального синтаксиса-лямбда выражений, stream — потоки, ключевое слово default, новое API, JavaScript-движок и другие обновления. Структура книги позволяет использовать её как учебник с самых азов языка, а также справочником, так как в тексте даются ссылки на конкретные понятия и выражения в виде сноски на параграф описания. Для практических занятий приводятся примеры программ в готовом к исполнению виде.
§1.1. Организация книги
§1.2. Примеры программ
§1.3. Обозначения
§1.4. Связь с предопределенными классами и интерфейсами
§1.5. Литература
Глава 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. Управляющие последовательности для символьных и строковых литералов
§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.6. Затирание типа
§4.7. Доступные при выполнении типы
§4.8. Несформированные типы
§4.9. Типы пересечений
§4.10. Создание подтипов
§4.10.1. Подтипы среди примитивных типов
§4.10.2. Подтипы среди типов классов и интерфейсов
§4.10.3. Подтипы среди типов массивов
§4.10.4. Наименьшая верхняя граница
§4.11. Где используются типы
§4.12. Переменные
§4.12.1. Переменные примитивного типа
§4.12.2. Переменные ссылочного типа
§4.12.3. Виды переменных
§4.12.4. Переменные final
§4.12.5. Начальные значения переменных
§4.12.6. Типы, классы и интерфейсы
Глава 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.1.8. Преобразование распаковки
§5.1.9. Непроверяемое преобразование
§5.1.10. Преобразование при фиксации
§5.1.11. Строковое преобразование
§5.1.12. Запрещенные преобразования
§5.1.13. Преобразование набора значений
§5.2. Контексты присваивания
§5.3. Контексты вызова
§5.4. Строковые контексты
§5.5. Контекст приведения
§5.5.1. Приведение ссылочных типов
§5.5.2. Проверяемые и непроверяемые приведения
§5.5.3. Проверяемые приведения времени выполнения
§5.6. Числовые контексты
§5.6.1. Унарное числовое повышение
§5.6.2. Бинарное числовое повышение
Глава 6 Имена
§6.1. Объявления
§6.2. Имена и идентификаторы
§6.3. Область видимости объявления
§6.4. Затенение и затемнение
§6.4.1. Затенение
§6.4.2. Затемнение
§6.5. Определение значения имени
§6.5.1. Синтаксическая классификация имен в соответствии с контекстом
§6.5.2. Переклассификация контекстуально неоднозначных имен
§6.5.3. Значение имен пакетов
§6.5.4. Значение PackageOrTypeNames
§6.5.5. Значение имен типов
§6.5.6. Значение имен выражений
§6.5.7. Значение имен методов
§6.6. Управление доступом
§6.6.1. Определение доступности
§6.6.2. Детали защищенного доступа
§6.7. Полностью квалифицированные и канонические имена
Глава 7 Пакеты
§7.1. Члены пакетов
§7.2. Реализация пакетов в разных системах
§7.3. Модули компиляции
§7.4. Объявления пакетов
§7.4.1. Именованные пакеты
§7.4.2. Безымянные пакеты
§7.4.3. Наблюдаемость пакетов
§7.5. Объявления импорта
§7.5.1. Объявления импорта единственного типа
§7.5.2. Объявление импорта типа по требованию
§7.5.3. Объявления единственного статического импорта
§7.5.4. Объявления статического импорта по требованию
§7.6. Объявления типа верхнего уровня
Глава 8 Классы
8.1. Объявления классов
§8.1.1. Модификаторы класса
§8.1.2. Обобщенные классы и параметры типа
§8.1.3. Внутренние классы и охватывающие экземпляры
§8.1.4. Суперклассы и подклассы
§8.1.5. Суперинтерфейсы
§8.1.6. Тело класса и объявления членов
§8.2. Члены классов
§8.3. Объявления полей
§8.3.1. Модификаторы полей
§8.3.2. Инициализация полей
§8.3.3. Опережающие ссылки во время инициализации поля
§8.4. Объявления методов
§8.4.1. Формальные параметры
§8.4.2. Сигнатура метода
§8.4.3. Модификаторы метода
§8.4.4. Обобщенные методы
§8.4.5. Возвращаемый тип метода
§8.4.6. Конструкция throws метода
§8.4.7. Тело метода
§8.4.8. Наследование, перекрытие и сокрытие
§8.4.9. Перегрузка
§8.5. Объявления типов-членов
§8.5.1. Объявления статических типов-членов
§8.6. Инициализаторы экземпляра
§8.7. Статические инициализаторы
§8.8. Объявления конструкторов
§8.8.1. Формальные параметры и параметры типа
§8.8.2. Сигнатура конструктора
§8.8.3. Модификаторы конструкторов
§8.8.4. Обобщенные конструкторы
§8.8.5. Конструкция throws у конструкторов
§8.8.6. Тип конструктора
§8.8.7. Тело конструктора
§8.8.8. Перегрузка конструкторов
§8.8.9. Конструктор по умолчанию
§8.8.10. Предупреждение инстанцирования класса
§8.9. Перечисления
§8.9.1. Константы перечислений
§8.9.2. Объявления тел перечислений
§8.9.3. Члены перечислений
Глава 9 Интерфейсы
§9.1. Объявления интерфейсов6
§9.1.1. Модификаторы интерфейсов
§9.1.2. Обобщенные интерфейсы и параметры типов
§9.1.3. Суперинтерфейсы и подынтерфейсы
§9.1.4. Тело интерфейса и объявления членов
§9.2. Члены интерфейса
§9.3. Объявления полей (констант)
§9.3.1. Инициализация полей в интерфейсах
§9.4. Объявления методов
§9.4.1. Наследование и перекрытие
§9.4.2. Перегрузка
§9.4.3. Тело метода интерфейса
§9.5. Объявления типов-членов
§9.6. Типы аннотаций
§9.6.1. Элементы типа аннотации
§9.6.2. Значения по умолчанию для элементов типа аннотации
§9.6.3. Повторяемые типы аннотаций
§9.6.4. Предопределенные типы аннотаций
§9.7. Аннотации
§9.7.1. Обычные аннотации
§9.7.2. Аннотации-маркеры
§9.7.3. Одноэлементные аннотации
§9.7.4. Где могут находиться аннотации
§9.7.5. Многократные аннотации одного типа
§9.8. Функциональные интерфейсы
§9.9. Типы функций
Глава 10 Массивы
§ 10.1. Типы массивов
§10.2. Переменные массивов
§ 10.3. Создание массива
§10.4. Доступ к массивам
§10.5. Исключение ArrayStoreException
§10.6. Инициализаторы массивов
§10.7. Члены массивов
§10.8. Объекты Class массивов
§10.9. Массив символов не является строкой
Глава 11 Исключения
§11.1. Виды и причины исключений
§11.1.1. Виды исключений
§ 11.1.2. Причины исключений
§ 11.1.3. Асинхронные исключения
§ 11.2. Проверка исключений времени компиляции
§ 11.2.1. Анализ исключений выражений
§ 11.2.2. Анализ исключений инструкций
§ 11.2.3. Проверка исключений
§ 11.3. Обработка исключений времени выполнения
Глава 12 Выполнение
§12.1. Запуск виртуальной машины Java
§12.1.1. Загрузка класса Test
§12.1.2. Связывание Test: проверка, подготовка(необязательное) разрешение
§12.1.3. Выполнение инициализаторов
§12.1.4. Вызов Test .main
§12.2. Загрузка классов и интерфейсов
§ 12.2.1. Процесс загрузки
§12.3. Связывание классов и интерфейсов
§12.3.1. Проверка бинарного представления
§ 12.3.2. Подготовка типа класса или интерфейса
§ 12.3.3. Разрешение символьных ссылок
§12.4. Инициализация классов и интерфейсов
§ 12.4.1. Когда осуществляется инициализация
§12.4.2. Детальная процедура инициализации
§12.5. Создание новых экземпляров классов
§12.6. Финализация экземпляров классов
§ 12.6.1. Реализация финализации
§12.6.2. Взаимодействие с моделью памяти
§12.7. Выгрузка классов и интерфейсов
§12.8. Выход из программы
Глава 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. Объявления полей
§13.4.9. Поля final и статические константные переменные
§13.4.10. Поля static
§13.4.11. Поля transient
§ 13.4.12. Объявления методов и конструкторов
§ 13.4.13. Параметры типа методов и конструкторов
§13.4.14. Формальные параметры методов и конструкторов
§13.4.15. Возвращаемый тип метода
§13.4.16. Методы abstract
§13.4.17. Методы final
§13.4.18. Методы native
§13.4.19. Методы static
§13.4.20. Методы synchronized
§13.4.21. Конструкция throws методов и конструкторов
§ 13.4.22. Тела методов и конструкторов
§13.4.23. Перегрузка методов и конструкторов
§13.4.24. Перекрытие метода
§13.4.25. Статические инициализаторы
§13.4.26. Эволюция перечислений
§13.5. Эволюция интерфейсов
§13.5.1. риЬИс-интерфейсы
§13.5.2. Суперинтерфейсы
§13.5.3. Члены интерфейса
§13.5.4. Параметры типа интерфейса
§13.5.5. Объявления полей
§13.5.6. Объявления методов интерфейсов
§ 13.5.7. Эволюция типов аннотаций
Глава 14 Блоки и инструкции
§ 14.1. Нормальное и преждевременное завершение инструкций
§14.2. Блоки
§14.3. Объявления локальных классов
§14.4. Инструкции объявления локальных переменных
§ 14.4.1. Деклараторы и типы локальных переменных
§14.4.2. Выполнение объявлений локальных переменных
§14.5. Инструкции
§14.6. Пустая инструкция
§14.7. Помеченные инструкции
§14.8. Инструкции выражений
§14.9. Инструкция if
§14.9.1. Инструкция if-then
§14.9.2. Инструкция if-then-else
§14.10. Инструкция assert
§14.11. Инструкция switch
§14.12. Инструкция while
§14.12.1. Преждевременное завершение инструкции while
§14.13. Инструкция do
§14.13.1. Преждевременное завершение инструкции do
§14.14. Инструкция for
§14.14.1. Базовая инструкция for
§14.14.2. Расширенная инструкция for
§14.15. Инструкция break
§14.16. Инструкция continue
§14.17. Инструкция return
§14.18. Инструкция throw
§14.19. Инструкция synchronized
§14.20. Инструкция try
§14.20.1. Выполнение try-catch
§14.20.2. Выполнение try-finally и try-catch-finally
§14.20.3. tгу-с-ресурсами
§ 14.21. Недостижимые инструкции
Глава 15 Выражения
§15.1. Вычисления, обозначения и результаты
§15.2. Виды выражений
§15.3. Тип выражения
§15.4. FP-строгие выражения
§15.5. Выражения и проверки времени выполнения
§15.6. Нормальное и преждевременное завершение вычисления
§15.7. Порядок вычисления
§ 15.7.1. Левый операнд вычисляется первым
§ 15.7.2. Вычисление операндов до операции
§15.7.3. Вычисления со скобками и приоритеты
§15.7.4. Списки аргументов вычисляются слева направо
§15.7.5. Порядок вычисления других выражений
§15.8. Первичные выражения
§ 15.8.1. Лексические литералы
§15.8.2. Литерал класса
§15.8.3. this
§15.8.4. Квалифицированный this
§15.8.5. Выражения в скобках
§ 15.9. Выражения создания экземпляра класса
§ 15.9.1. Определение инстанцируемого класса
§ 15.9.2. Определение охватывающих экземпляров
§15.9.3. Выбор конструктора и его аргументов
§15.9.4. Вычисление времени выполнения выражения создания экземпляра класса
§15.9.5. Объявления анонимных классов
§15.10. Выражения создания массивов и доступа к ним
§ 15.10.1. Выражения создания массивов
§15.10.2. Вычисление времени выполнения выражений создания массивов
§15.10.3. Выражения обращения к массиву
§15.10.4. Вычисление времени выполнения выражения обращения к массиву
§15.11. Выражения обращения к полю
§15.11.1. Обращение к полю с помощью первичного выражения
§ 15.11.2. Обращение к методам суперкласса с помощью ключевого слова super
§15.12. Выражения вызовов методов
§15.12.1. Этап 1 времени компиляции: определение класса или интерфейса для поиска
§ 15.12.2. Этап 2 времени компиляции: определение сигнатуры метода
§15.12.3. Этап 3 времени компиляции: подходит ли выбранный метод
§ 15.12.4. Вычисление вызова метода времени выполнения
§15.13. Выражения ссылки на метод
§15.13.1. Объявление времени компиляции ссылки на метод
§15.13.2. Тип ссылки на метод
§15.13.3. Вычисление времени выполнения ссылок на методы
§15.14. Постфиксные выражения
§15.14.1. Имена выражений
§15.14.2. Оператор постфиксного инкремента ++
§15.14.3. Постфиксный оператор декремента —
§15.15. Унарные операторы
§15.15.1. Оператор префиксного инкремента ++
§15.15.2. Оператор префиксного декремента —
§15.15.3. Оператор унарного +
§15.15.4. Оператор унарного -
§ 15.15.5. Оператор побитового дополнения -
§15.15.6. Оператор логического дополнения !
§15.16. Выражения приведения
§15.17. Мультипликативные операторы
§15.17.1. Оператор умножения *
§15.17.2. Оператор деления /
§15.17.3. Оператор получения остатка %
§15.18. Аддитивные операторы
§15.18.1. Оператор конкатенации строк
§15.18.2. Аддитивные операторы (+ и -) для числовых типов
§15.19. Операторы сдвига
§15.20. Операторы отношения
§15.20.1. Числовые операторы сравнения <, >, <= и >
§15.20.2. Оператор сравнения типа instanceof
§ 15.21. Операторы равенства
§ 15.21.1. Числовые операторы равенства == и
§15.21.2. Логические операторы равенства == и
§15.21.3. Ссылочные операторы равенства == и
§15.22. Побитовые и логические операторы
§15.22.1. Целочисленные побитовые операторы &, А и
§15.22.2. Булевы логические операторы &, А и
§15.23. Оператор условного И &&
§15.24. Оператор условного ИЛИ
§15.25. Условный оператор ? :
§15.25.1. Булевы условные выражения
§15.25.2. Числовые условные выражения
§15.25.3. Ссылочные условные выражения
§15.26. Операторы присваивания
§15.26.1. Простой оператор присваивания
§15.26.2. Составные операторы присваивания
§15.27. Лямбда-выражения
§ 15.27.1. Параметры лямбда-выражения
§15.27.2. Тело лямбда-выражения
§15.27.3. Тип лямбда-выражения
§15.27.4. Вычисление лямбда-выражений во время выполнения
§15.28. Константные выражения
Глава 16 Определенное присваивание
§16.1. Определенное присваивание и выражения
§16.1.1. Булевы константные выражения
§16.1.2. Оператор условного И & &
§16.1.3. Оператор условного ИЛИ
§ 16.1.4. Оператор логического дополнения
§16.1.5. Условный оператор ? :
§16.1.6. Условный оператор ? :
§16.1.7. Прочие выражения типа boolean
§16.1.8. Выражения присваивания
§16.1.9. Операторы ++ и
§16.1.10. Другие выражения
§16.2. Определенное присваивание и инструкции
§16.2.1. Пустые инструкции
§16.2.2. Блоки
§16.2.3. Инструкции объявления локального класса
§16.2.4. Инструкции объявления локальных переменных
§16.2.5. Помеченные инструкции
§16.2.6. Инструкции выражений
§16.2.7. Инструкции if
§16.2.8. Инструкции assert
§16.2.9. Инструкции switch
§16.2.10. Инструкция while
§ 16.2.11. Инструкция do
§16.2.12. Инструкции for
§16.2.13. Инструкции break, continue, return и throw
§16.2.14. Инструкции synchronized
§16.2.15. Инструкции try
§16.3. Определенное присваивание и параметры
§16.4. Определенное присваивание и инициализаторы массива
§16.5. Определенное присваивание и константы перечислений
§16.6. Определенное присваивание и анонимные классы
§16.7. Определенное присваивание и типы-члены
§16.8. Определенное присваивание и статические инициализаторы
§16.9. Определенное присваивание, конструкторы и инициализаторы экземпляров
Глава 17 Потоки и блокировки
§17.1. Синхронизация
§ 17.2. Множества ожидания и уведомление
§ 17.2.1. Ожидание
§17.2.2. Уведомление
§17.2.3. Прерывания
§17.2.4. Взаимодействие ожиданий, уведомлений и прерываний
§17.3. sleep и yield
§ 17.4. Модель памяти
§ 17.4.1. Разделяемые переменные
§17.4.2. Действия
§17.4.3. Программы и программный порядок
§ 17.4.4. Порядок синхронизации
§ 17.4.5. Упорядочение произошло до
§17.4.6. Выполнения
§ 17.4.7. Корректно сформированные выполнения
§17.4.8. Выполнения и требования причинности
§ 17.4.9. Наблюдаемое поведение и незавершающее выполнение
§17.5. Семантика поля, объявленного как final
§17.5.1. Семантика final-полей
§17.5.2. Чтение final-полей в процессе конструирования
§17.5.3. Последующая модификация final-полей
§ 17.5.4. Поля, защищенные от записи
§ 17.6. Разрыв слова
§17.7. Неатомарное рассмотрение double и long
Глава 18 Вывод типов
§18.1. Концепции и обозначения
§18.1.1. Переменные вывода
§18.1.2. Формулы ограничений
§18.1.3. Границы
§ 18.2. Приведение
§ 18.2.1. Ограничения совместимости выражений
§18.2.2. Ограничения совместимости типов
§18.2.3. Ограничения субтипирования
§ 18.2.4. Ограничения эквивалентности типов
§18.2.5. Ограничения проверяемых исключений
§ 18.3. Объединение
§ 18.3.1. Комплементарные пары границ
§18.3.2. Границы, включающие преобразование при фиксации
§ 18.4. Разрешение
§18.5. Использование вывода
§18.5.1. Вывод применимости вызова
§ 18.5.2. Вывод типа вызова
§18.5.3. Вывод параметризации функционального интерфейса
§ 18.5.4. Вывод более подходящего метода
Глава 19 Синтаксис
Продукции из главы 3, ‘‘Лексическая структура”
Продукции из главы 4, “Типы, значения и переменные”
Продукции из главы 6, “Имена”
Продукции из главы 7, “Пакеты”
Продукции из главы 8, “Классы”
Продукции из главы 9, “Интерфейсы”
Продукции из главы 10, “Массивы”
Продукции из главы 14, “Блоки и инструкции”
Продукции из главы 15, “Выражения”
Предметный указатель
Добавить комментарий