21
Содержание Предисловие 29 Книга для всех программистов 30 Структура книги 30 Исходный код примеров, доступный в Интернете 31 Особые благодарности 31 Дополнительная литература 31 От издательства 32 Часть I. Язык Java 33 Глава 1. История и развитие языка Java 35 Происхождение Java 35 Зарождение современного программирования: язык C 36 Следующий этап: язык C++ 37 Предпосылки к созданию Java 39 Создание языка Java 39 Связь с языком C# 42 Каким образом язык Java повлиял на Интернет 42 Аплеты на Java 42 Безопасность 43 Переносимость 43 Чудо Java: байт-код 44 Выход за пределы аплетов 45 Сервлеты: серверные программы на Java 46 Терминология Java 46 Простота 47 Объектная ориентированность 47 Надежность 48 Многопоточность 48 Архитектурная нейтральность 49 Интерпретируемость и высокая производительность 49 Распределенность 49 Динамичность 49 Эволюция языка Java 50 Версия Java SE 9 54 Культура нововведений 55 Глава 2. Краткий обзор Java 57 Объектно-ориентированное программирование 57 Две парадигмы 57 Java The Complete Reference.indb 7 10.05.2018 23:12:04

СодержаниеВложенные и внутренние классы 207 ... Вложенные интерфейсы 263 Java The Complete Reference.indb 10 10.05.2018 23:12:04

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: СодержаниеВложенные и внутренние классы 207 ... Вложенные интерфейсы 263 Java The Complete Reference.indb 10 10.05.2018 23:12:04

Содержание

Предисловие 29Книга для всех программистов 30Структура книги 30Исходный код примеров, доступный в Интернете 31Особые благодарности 31Дополнительная литература 31От издательства 32

Часть I. Язык Java 33

Глава 1. История и развитие языка Java 35Происхождение Java 35

Зарождение современного программирования: язык C 36Следующий этап: язык C++ 37Предпосылки к созданию Java 39

Создание языка Java 39Связь с языком C# 42

Каким образом язык Java повлиял на Интернет 42Аплеты на Java 42Безопасность 43Переносимость 43

Чудо Java: байт-код 44Выход за пределы аплетов 45Сервлеты: серверные программы на Java 46Терминология Java 46

Простота 47Объектная ориентированность 47Надежность 48Многопоточность 48Архитектурная нейтральность 49Интерпретируемость и высокая производительность 49Распределенность 49Динамичность 49

Эволюция языка Java 50Версия Java SE 9 54Культура нововведений 55

Глава 2. Краткий обзор Java 57Объектно-ориентированное программирование 57

Две парадигмы 57

Java The Complete Reference.indb 7 10.05.2018 23:12:04

Page 2: СодержаниеВложенные и внутренние классы 207 ... Вложенные интерфейсы 263 Java The Complete Reference.indb 10 10.05.2018 23:12:04

8 Содержание

Абстракция 58Три принципа ООП 59

Первый пример простой программы 64Ввод кода программы 65Компиляция программы 65Подробный анализ первого примера программы 66

Второй пример короткой программы 69Два управляющих оператора 71

Условный оператор if 71Оператор цикла for 73

Применение блоков кода 74Вопросы лексики 75

Пробелы 76Идентификаторы 76Литералы 76Комментарии 76Разделители 77Ключевые слова Java 77

Библиотеки классов Java 78

Глава 3. Типы данных, переменные и массивы 79Java — строго типизированный язык 79Примитивные типы 79Целые числа 80

Тип byte 81Тип short 81Тип int 81Тип long 82

Числа с плавающей точкой 82Тип float 83Тип double 83

Символы 84Логические значения 85Подробнее о литералах 86

Целочисленные литералы 87Литералы с плавающей точкой 88Логические литералы 89Символьные литералы 89Строковые литералы 90

Переменные 90Объявление переменной 91Динамическая инициализация 91Область видимости и срок действия переменных 92

Преобразование и приведение типов 95Автоматическое преобразование типов в Java 95Приведение несовместимых типов 95

Автоматическое продвижение типов в выражениях 97Правила продвижения типов 98

Массивы 99Одномерные массивы 99Многомерные массивы 102Альтернативный синтаксис объявления массивов 106

Введение в символьные строки 106

Java The Complete Reference.indb 8 10.05.2018 23:12:04

Page 3: СодержаниеВложенные и внутренние классы 207 ... Вложенные интерфейсы 263 Java The Complete Reference.indb 10 10.05.2018 23:12:04

Содержание 9

Глава 4. Операции 109Арифметические операции 109

Основные арифметические операции 110Операция деления по модулю 111Составные арифметические операции с присваиванием 111Операции инкремента и декремента 112

Поразрядные операции 114Поразрядные логические операции 116Сдвиг влево 118Сдвиг вправо 120Беззнаковый сдвиг вправо 121Поразрядные составные операции с присваиванием 123

Операции отношения 124Логические операции 125

Укороченные логические операции 126Операция присваивания 127

Тернарная операция ? 128Предшествование операций 129Применение круглых скобок 130

Глава 5. Управляющие операторы 131Операторы выбора 131

Условный оператор if 131Оператор switch 135

Операторы цикла 140Цикл while 140Цикл do-while 142Цикл for 145Вложенные циклы 154

Операторы перехода 155Применение оператора break 155Применение оператора continue 159Оператор return 161

Глава 6. Введение в классы 163Основы классов 163

Общая форма класса 163Простой класс 164

Объявление объектов 167Подробное рассмотрение операции new 168

Присваивание переменным ссылок на объекты 169Введение в методы 170

Ввод метода в класс Box 171Возврат значений 173Ввод метода, принимающего параметры 174

Конструкторы 177Параметризированные конструкторы 179

Ключевое слово this 180Сокрытие переменных экземпляра 180

Сборка “мусора” 181Класс Stack 181

Java The Complete Reference.indb 9 10.05.2018 23:12:04

Page 4: СодержаниеВложенные и внутренние классы 207 ... Вложенные интерфейсы 263 Java The Complete Reference.indb 10 10.05.2018 23:12:04

10 Содержание

Глава 7. Подробное рассмотрение классов и методов 185Перегрузка методов 185

Перегрузка конструкторов 188Применение объектов в качестве параметров 191Подробное рассмотрение особенностей передачи аргументов 193Возврат объектов 195Рекурсия 196Введение в управление доступом 199Ключевое слово static 202Ключевое слово final 204Еще раз о массивах 205Вложенные и внутренние классы 207Краткий обзор класса String 210Применение аргументов командной строки 212Аргументы переменной длины 213

Перегрузка методов с аргументами переменной длины 216Аргументы переменной длины и неоднозначность 218

Глава 8. Наследование 221Основы наследования 221

Доступ к членам класса и наследование 223Практический пример наследования 224Переменная из суперкласса может ссылаться на объект подкласса 226

Ключевое слово super 227Вызов конструкторов суперкласса с помощью ключевого слова super 227Другое применение ключевого слова super 231

Создание многоуровневой иерархии 232Порядок вызова конструкторов 235Переопределение методов 236Динамическая диспетчеризация методов 239

Назначение переопределенных методов 240Применение переопределения методов 241

Применение абстрактных классов 242Ключевое слово final в сочетании с наследованием 246

Предотвращение переопределения с помощью ключевого слова final 246Предотвращение наследования с помощью ключевого слова final 247

Класс Object 247

Глава 9. Пакеты и интерфейсы 249Пакеты 249

Определение пакета 250Поиск пакетов и переменная окружения CLASSPATH 251Краткий пример пакета 251

Доступ к пакетам и его компонентам 252Пример доступа к пакетам 254

Импорт пакетов 257Интерфейсы 259

Объявление интерфейса 260Реализация интерфейсов 261Вложенные интерфейсы 263

Java The Complete Reference.indb 10 10.05.2018 23:12:04

Page 5: СодержаниеВложенные и внутренние классы 207 ... Вложенные интерфейсы 263 Java The Complete Reference.indb 10 10.05.2018 23:12:04

Содержание 11

Применение интерфейсов 264Переменные в интерфейсах 268Расширение интерфейсов 270

Методы с реализацией по умолчанию 271Основы применения методов с реализацией по умолчанию 272Прикладной пример 274Вопросы множественного наследования 275

Применение статических методов в интерфейсе 276Закрытые методы интерфейсов 277Заключительные соображения по поводу пакетов и интерфейсов 278

Глава 10. Обработка исключений 279Основы обработки исключений 279Типы исключений 280Необрабатываемые исключения 281Применение блоков операторов try и catch 282

Вывод описания исключения 284Применение нескольких операторов catch 284Вложенные операторы try 286Оператор throw 289Оператор throws 290Оператор finally 291Встроенные в Java исключения 293Создание собственных подклассов исключений 295Цепочки исключений 298Дополнительные средства для обработки исключений 299Применение исключений 301

Глава 11. Многопоточное программирование 303Модель потоков исполнения в Java 304

Приоритеты потоков 305Синхронизация 306Обмен сообщениями 307Класс Thread и интерфейс Runnable 307

Главный поток исполнения 308Создание потока исполнения 310

Реализация интерфейса Runnable 310Расширение класса Thread 312Выбор способа создания потоков исполнения 313

Создание многих потоков исполнения 314Применение методов isAlive() и join() 315Приоритеты потоков исполнения 318Синхронизация 319

Применение синхронизированных методов 319Оператор synchronized 322

Взаимодействие потоков исполнения 323Взаимная блокировка 328

Приостановка, возобновление и остановка потоков исполнения 330Получение состояния потока исполнения 333Одновременное создание и запуск потоков исполнения фабричными методами 335Применение многопоточности 336

Java The Complete Reference.indb 11 10.05.2018 23:12:04

Page 6: СодержаниеВложенные и внутренние классы 207 ... Вложенные интерфейсы 263 Java The Complete Reference.indb 10 10.05.2018 23:12:04

12 Содержание

Глава 12. Перечисления, автоупаковка и аннотации 337Перечисления 337

Основные положения о перечислениях 338Методы values() и valueOf() 340Перечисления в Java относятся к типам классов 341Перечисления наследуются от класса Enum 343Еще один пример перечисления 346

Оболочки типов 347Класс Character 348Класс Boolean 348Оболочки числовых типов 349

Автоупаковка 350Автоупаковка и методы 351Автоупаковка и автораспаковка в выражениях 352Автоупаковка и распаковка значений из классов Boolean и Character 354Автоупаковка и автораспаковка помогает предотвратить ошибки 355Предупреждение 356

Аннотации 356Основы аннотирования программ 357Правила удержания аннотаций 358Получение аннотаций во время выполнения с помощью рефлексии 358Второй пример применения рефлексии 361Получение всех аннотаций 362Интерфейс AnnotatedElement 364Использование значений по умолчанию 364Маркерные аннотации 366Одночленные аннотации 367Встроенные аннотации 368

Типовые аннотации 371Повторяющиеся аннотации 376

Некоторые ограничения на аннотации 378

Глава 13. Ввод-вывод, оператор try с ресурсами и прочие вопросы 379Основы ввода-вывода 379

Потоки ввода-вывода 380Потоки ввода-вывода байтов и символов 380Предопределенные потоки ввода-вывода 382

Чтение данных, вводимых с консоли 383Чтение символов 384Чтение символьных строк 385

Запись данных, выводимых на консоль 386Класс PrintWriter 387Чтение и запись данных в файлы 388Автоматическое закрытие файла 395Модификаторы доступа transient и volatile 399Применение операции instanceof 399Модификатор доступа strictfp 402Платформенно-ориентированные методы 402Применение ключевого слова assert 403

Параметры включения и отключения режима проверки утверждений 406

Java The Complete Reference.indb 12 10.05.2018 23:12:04

Page 7: СодержаниеВложенные и внутренние классы 207 ... Вложенные интерфейсы 263 Java The Complete Reference.indb 10 10.05.2018 23:12:04

Содержание 13

Статический импорт 406Вызов перегружаемых конструкторов по ссылке this() 409Компактные профили Java API 411

Глава 14. Обобщения 413Что такое обобщения 414Простой пример обобщения 414

Обобщения оперируют только ссылочными типами 418Обобщенные типы различаются по аргументам типа 419Каким образом обобщения повышают типовую безопасность 419

Обобщенный класс с двумя параметрами типа 421Общая форма обобщенного класса 423Ограниченные типы 423Применение метасимвольных аргументов 426

Ограниченные метасимвольные аргументы 429Создание обобщенного метода 434

Обобщенные конструкторы 436Обобщенные интерфейсы 437Базовые типы и унаследованный код 439Иерархии обобщенных классов 442

Применение обобщенного суперкласса 442Обобщенный подкласс 444Сравнение типов в обобщенной иерархии во время выполнения 446Приведение типов 449Переопределение методов в обобщенном классе 449

Выведение типов и обобщения 450Стирание 451

Мостовые методы 452Ошибки неоднозначности 454Некоторые ограничения, присущие обобщениям 455

Получить экземпляр по параметру типа нельзя 456Ограничения на статические члены 456Ограничения на обобщенные массивы 456Ограничения на обобщенные исключения 458

Глава 15. Лямбда-выражения 459Введение в лямбда-выражения 459

Основные положения о лямбда-выражениях 460Функциональные интерфейсы 461Некоторые примеры лямбда-выражений 463

Блочные лямбда-выражения 466Обобщенные функциональные интерфейсы 468Передача лямбда-выражений в качестве аргументов 470Лямбда-выражения и исключения 473Лямбда-выражения и захват переменных 475Ссылки на методы 476

Ссылки на статические методы 476Ссылки на методы экземпляра 478Ссылки на обобщенные методы 482

Ссылки на конструкторы 485Предопределенные функциональные интерфейсы 490

Java The Complete Reference.indb 13 10.05.2018 23:12:04

Page 8: СодержаниеВложенные и внутренние классы 207 ... Вложенные интерфейсы 263 Java The Complete Reference.indb 10 10.05.2018 23:12:04

14 Содержание

Глава 16. Модули 493Основные положения о модулях 493

Простой пример модуля 494Компиляция и выполнение первого примера модульного приложения 499Подробное рассмотрение операторов requires и exports 500

Модуль java.base и платформенные модули 502Унаследованный код и безымянные модули 503Экспорт в конкретный модуль 504Применение оператора requires transitive 505Применение служб 510

Основные положения о службах и поставщиках их услуг 511Ключевые слова для поддержки служб 512Пример модульной службы 512

Графы модулей 519Специальные средства модулей 520

Открытые модули 520Оператор opens 521Оператор requires static 521

Утилита jlink и модульные архивные JAR-файлы 522Связывание файлов в развернутом каталоге 522Связывание модульных архивных JAR-файлов 523Файлы формата JMOD 524

Об уровнях и автоматических модулях 524Заключительные соображения по поводу модулей 525

Часть II. Библиотека Java 527

Глава 17. Обработка символьных строк 529Конструкторы символьных строк 530Длина символьной строки 532Специальные строковые операции 532

Строковые литералы 533Сцепление строк 533Сцепление символьных строк с другими типами данных 534Преобразование символьных строк и метод toString() 534

Извлечение символов 536Метод charAt() 536Метод getChars() 536Метод getBytes() 537Метод toCharArray() 537

Сравнение символьных строк 537Методы equals() и equalsIgnoreCase() 538Метод regionMatches() 539Методы startsWith() и endsWith() 539Метод equals() в сравнении с операцией == 540Метод compareTo() 540

Поиск в символьных строках 542Видоизменение символьных строк 544

Метод substring() 544Метод concat() 545Метод replace() 545Метод trim() 546

Java The Complete Reference.indb 14 10.05.2018 23:12:05

Page 9: СодержаниеВложенные и внутренние классы 207 ... Вложенные интерфейсы 263 Java The Complete Reference.indb 10 10.05.2018 23:12:04

Содержание 15

Преобразование данных методом valueOf() 546Смена регистра букв в строке 547Соединение символьных строк 548Дополнительные методы из класса String 549Класс StringBuffer 550

Методы length() и capacity() 551Метод ensureCapacity() 552Метод setLength() 552Методы charAt() и setCharAt() 552Метод getChars() 553Метод append() 554Метод insert() 554Метод reverse() 555Методы delete() и deleteCharAt() 555Метод replace() 556Метод substring() 557Дополнительные методы из класса StringBuffer 557

Класс StringBuilder 558

Глава 18. Пакет java.lang 559Оболочки примитивных типов 560

Класс Number 560Классы Double и Float 560Методы isInfinite() и isNaN() 565Классы Byte, Short, Integer и Long 565Класс Character 578Дополнения класса Character для поддержки кодовых точек в Юникоде 581Класс Boolean 583

Класс Void 584Класс Process 584Класс Runtime 586

Управление памятью 588Выполнение других программ 589

Класс Runtime.Version 590Класс ProcessBuilder 591Класс System 594

Измерение времени выполнения программы методом currentTimeMills() 596Применение метода arraycopy() 597Свойства окружения 598

Интерфейс System.Logger и класс System.LoggerFinder 599Класс Object 599Применение метода clone() и интерфейса Cloneable 600Класс Class 602Класс ClassLoader 605Класс Math 606

Тригонометрические функции 606Экспоненциальные функции 607Функции округления 607Прочие методы из класса Math 609

Класс StrictMath 612Класс Compiler 612

Java The Complete Reference.indb 15 10.05.2018 23:12:05

Page 10: СодержаниеВложенные и внутренние классы 207 ... Вложенные интерфейсы 263 Java The Complete Reference.indb 10 10.05.2018 23:12:04

16 Содержание

Классы Thread, ThreadGroup и интерфейс Runnable 613Интерфейс Runnable 613Класс Thread 613Класс ThreadGroup 616

Классы ThreadLocal и InheritableThreadLocal 621Класс Package 621Класс Module 623Класс ModuleLayer 624Класс RuntimePermission 624Класс Throwable 624Класс SecurityManager 624Класс StackTraceElement 624Класс StackWalker и интерфейс StackWalker.StackFrame 626Класс Enum 626

Глава 19. Пакет java.util, часть I. Collections Framework 633Краткий обзор коллекций 634Интерфейсы коллекций 636

Интерфейс Collection 637Интерфейс List 640Интерфейс Set 642Интерфейс SortedSet 643Интерфейс NavigableSet 644Интерфейс Queue 646Интерфейс Dequeue 647

Классы коллекций 649Класс ArrayList 650Класс LinkedList 654Класс HashSet 656Класс LinkedHashSet 657Класс TreeSet 658Класс PriorityQueue 659Класс ArrayDeque 660Класс EnumSet 661

Доступ к коллекциям через итератор 662Применение интерфейса Iterator 664Цикл for в стиле for each как альтернатива итераторам 665

Итераторы-разделители 666Сохранение объектов пользовательских классов в коллекциях 670Интерфейс RandomAccess 672Манипулирование отображениями 672

Интерфейсы отображений 672Классы отображений 680

Компараторы 686Применение компараторов 689

Алгоритмы коллекций 695Массивы 702Унаследованные классы и интерфейсы 708

Интерфейс Enumeration 709Класс Vector 709Класс Stack 714Класс Dictionary 716

Java The Complete Reference.indb 16 10.05.2018 23:12:05

Page 11: СодержаниеВложенные и внутренние классы 207 ... Вложенные интерфейсы 263 Java The Complete Reference.indb 10 10.05.2018 23:12:04

Содержание 17

Класс Hashtable 717Класс Properties 720Применение методов store() и load() 724

Заключительные соображения по поводу коллекций 726

Глава 20. Пакет java.util, часть II. Прочие служебные классы 727Класс StringTokenizer 727Класс BitSet 729Классы Optional, OptionalDouble, OptionalInt и OptionalLong 733Класс Date 736Класс Calendar 738Класс GregorianCalendar 742Класс TimeZone 743Класс SimpleTimeZone 745Класс Locale 746Класс Random 747Классы Timer и TimerTask 750Класс Currency 753Класс Formatter 754

Конструкторы класса Formatter 754Методы из класса Formatter 755Основы форматирования 756Форматирование строк и символов 758Форматирование чисел 758Форматирование времени и даты 760Спецификаторы формата %n и %% 761Указание минимальной ширины поля 762Указание точности 763Применение признаков формата 764Выравнивание выводимых данных 765Признаки пробела, +, 0 и ( 765Признак запятой 766Признак # 767Прописные формы спецификаторов формата 767Применение индекса аргумента 768Закрытие объекта типа Formatter 769Аналог функции printf() в Java 770

Класс Scanner 770Конструкторы класса Scanner 770Основы сканирования 772Некоторые примеры применения класса Scanner 775Установка разделителей 779Прочие средства класса Scanner 781

Классы ResourceBundle, ListResourceBundle и PropertyResourceBundle 782Прочие служебные классы и интерфейсы 787Подпакеты, входящие в состав пакета java.util 788

Пакеты java.util.concurrent, java.util.concurrent.atomic, java.util.concurrent.locks 789Пакет java.util.function 789Пакет java.util.jar 792

Java The Complete Reference.indb 17 10.05.2018 23:12:05

Page 12: СодержаниеВложенные и внутренние классы 207 ... Вложенные интерфейсы 263 Java The Complete Reference.indb 10 10.05.2018 23:12:04

18 Содержание

Пакет java.util.logging 793Пакет java.util.prefs 793Пакет java.util.regex 793Пакет java.util.spi 793Пакет java.util.stream 793Пакет java.util.zip 793

Глава 21. Пакет java.io для ввода-вывода 795Классы и интерфейсы ввода-вывода 796Класс File 796

Каталоги 800Применение интерфейса FilenameFilter 801Альтернативный метод listFiles() 802Создание каталогов 803

Интерфейсы AutoCloseable, Closeable и Flushable 803Исключения ввода-вывода 804Два способа закрытия потоков ввода-вывода 804Классы потоков ввода-вывода 806Потоки ввода-вывода байтов 807

Класс InputStream 807Класс OutputStream 808Класс FileInputStream 809Класс FileOutputStream 811Класс ByteArrayInputStream 813Класс ByteArrayOutputStream 815Фильтруемые потоки ввода-вывода байтов 817Буферизованные потоки ввода-вывода байтов 817Класс SequenceInputStream 821Класс PrintStream 823Классы DataOutputStream и DataInputStream 826Класс RandomAccessFile 828

Потоки ввода-вывода символов 829Класс Reader 829Класс Writer 830Класс FileReader 831Класс FileWriter 832Класс CharArrayReader 833Класс CharArrayWriter 834Класс BufferedReader 836Класс BufferedWriter 837Класс PushbackReader 838Класс PrintWriter 839

Класс Console 840Сериализация 842

Интерфейс Serializable 843Интерфейс Externalizable 843Интерфейс ObjectOutput 844Класс ObjectOutputStream 844Интерфейс ObjectInput 845Класс ObjectInputStream 846Пример сериализации 848

Преимущества потоков ввода-вывода 849

Java The Complete Reference.indb 18 10.05.2018 23:12:05

Page 13: СодержаниеВложенные и внутренние классы 207 ... Вложенные интерфейсы 263 Java The Complete Reference.indb 10 10.05.2018 23:12:04

Содержание 19

Глава 22. Система ввода-вывода NIO 851Классы системы ввода-вывода NIO 851Основные положения о системе ввода-вывода NIO 852

Буферы 852Каналы 855Наборы символов и селекторы 856

Усовершенствования в системе NIO.2 856Интерфейс Path 857Класс Files 858Класс Paths 861Интерфейсы атрибутов файлов 862Классы FileSystem, FileSystems и FileStore 864

Применение системы ввода-вывода NIO 864Применение системы NIO для канального ввода-вывода 865Применение системы NIO для потокового ввода-вывода 876Применение системы ввода-вывода NIO для операций в файловой системе 879

Глава 23. Работа в сети 889Основы работы в сети 889Сетевые классы и интерфейсы 891Класс InetAddress 891

Фабричные методы 892Методы экземпляра 893

Классы Inet4Address и Inet6Address 894Клиентские сокеты по протоколу TCP/IP 894Класс URL 898Класс URLConnection 900Класс HttpURLConnection 903Класс URI 905Cookie-файлы 905Серверные сокеты по протоколу TCP/IP 905Дейтаграммы 906

Класс DatagramSocket 907Класс DatagramPacket 908

Глава 24. Обработка событий 911Два подхода к обработке событий 912Модель делегирования событий 912

События 912Источники событий 913Приемники событий 914

Классы событий 914Класс ActionEvent 916Класс AdjustmentEvent 916Класс ComponentEvent 917Класс ContainerEvent 918Класс FocusEvent 919Класс ItemEvent 921Класс KeyEvent 922Класс MouseEvent 923Класс MouseWheelEvent 924

Java The Complete Reference.indb 19 10.05.2018 23:12:05

Page 14: СодержаниеВложенные и внутренние классы 207 ... Вложенные интерфейсы 263 Java The Complete Reference.indb 10 10.05.2018 23:12:04

20 Содержание

Класс TextEvent 925Класс WindowEvent 926

Источники событий 927Интерфейсы приемников событий 928

Интерфейс ActionListener 929Интерфейс AdjustmentListener 929Интерфейс ComponentListener 929Интерфейс ContainerListener 929Интерфейс FocusListener 929Интерфейс ItemListener 930Интерфейс KeyListener 930Интерфейс MouseListener 930Интерфейс MouseMotionListener 930Интерфейс MouseWheelListener 931Интерфейс TextListener 931Интерфейс WindowFocusListener 931Интерфейс WindowListener 931

Применение модели делегирования событий 931Основные принципы обработки событий в ГПИ средствами AWT 932Обработка событий от мыши 933Обработка событий от клавиатуры 937

Классы адаптеров 940Внутренние классы 943

Анонимные внутренние классы 945Глава 25. Введение в библиотеку AWT: работа с окнами, графикой и текстом 947

Классы библиотеки AWT 948Основные положения об окнах 950

Класс Component 951Класс Container 951Класс Panel 952Класс Window 952Класс Frame 952Класс Canvas 952

Работа с обрамляющими окнами 952Установка размеров окна 953Сокрытие и отображение окна 953Установка заголовка окна 953Закрытие обрамляющего окна 953Метод paint() 954Отображение символьной строки 954Установка цвета переднего и заднего плана 955Запрос на повторное воспроизведение 955Создание прикладной программы на основе класса Frame 957

Поддержка графики 957Рисование линий 958Рисование прямоугольников 958Рисование эллипсов и окружностей 959Рисование дуг 959Рисование многоугольников 959Демонстрация методов рисования 960Изменение размеров графики 962

Java The Complete Reference.indb 20 10.05.2018 23:12:05

Page 15: СодержаниеВложенные и внутренние классы 207 ... Вложенные интерфейсы 263 Java The Complete Reference.indb 10 10.05.2018 23:12:04

Содержание 21

Работа с цветом 963Методы из класса Color 964Установка текущего цвета графики 965Пример программы, демонстрирующий работу с цветом 965

Установка режима рисования 966Работа со шрифтами 968

Определение доступных шрифтов 970Создание и выбор шрифта 971Получение сведений о шрифте 974

Управление форматированием выводимого текста 975

Глава 26. Применение элементов управления, диспетчеров компоновки и меню из библиотеки AWT 979

Основные положения об элементах управления 980Ввод и удаление элементов управления 980Реагирование на элементы управления 981Исключение типа HeadlessException 981

Метки 981Экранные кнопки 983

Обработка событий от кнопок 984Флажки 988

Обработка событий от флажков 989Кнопки-переключатели 991Элементы управления выбором 992

Обработка событий от раскрывающихся списков 993Использование списков 995

Обработка событий от списков 997Управление полосами прокрутки 999

Обработка событий от полос прокрутки 1000Текстовые поля 1002

Обработка событий в текстовых полях 1003Текстовые области 1005Диспетчеры компоновки 1007

Класс FlowLayout 1008Класс BorderLayout 1010Вставки 1011Класс GridLayout 1013Класс CardLayout 1015Класс GridBagLayout 1018

Меню и строки меню 1023Диалоговые окна 1029О переопределении метода paint() 1033

Глава 27. Изображения 1035Форматы файлов изображений 1035Основы работы с изображениями: создание, загрузка и отображение 1036

Создание объекта класса Image 1036Загрузка изображения 1037Воспроизведение изображения 1037

Двойная буферизация 1039

Java The Complete Reference.indb 21 10.05.2018 23:12:05

Page 16: СодержаниеВложенные и внутренние классы 207 ... Вложенные интерфейсы 263 Java The Complete Reference.indb 10 10.05.2018 23:12:04

22 Содержание

Интерфейс ImageProducer 1042Класс MemoryImageSource 1042

Интерфейс ImageConsumer 1044Класс PixelGrabber 1045

Класс ImageFilter 1048Фильтр класса CropImageFilter 1048Фильтр класса RGBImageFilter 1050

Дополнительные классы для формирования изображений 1062

Глава 28. Служебные средства параллелизма 1063Пакеты параллельного прикладного интерфейса API 1064

Пакет java.util.concurrent.atomic 1066Пакет java.util.concurrent.locks 1066

Применение объектов синхронизации 1066Класс Semaphore 1067Класс CountDownLatch 1073Класс CyclicBarrier 1075Класс Exchanger 1078Класс Phaser 1080

Применение исполнителя 1088Простой пример исполнителя 1089Применение интерфейсов Callable и Future 1091

Перечисление TimeUnit 1094Параллельные коллекции 1095Блокировки 1096Атомарные операции 1099Параллельное программирование средствами Fork/Join Framework 1101

Основные классы Fork/Join Framework 1102Стратегия “разделяй и властвуй” 1106Первый простой пример вилочного соединения 1107Влияние уровня параллелизма 1110Пример применения класса RecursiveTask<V> 1114Асинхронное выполнение задач 1117Отмена задачи 1117Определение состояния завершения задачи 1118Перезапуск задачи 1118Предмет дальнейшего изучения 1118Рекомендации относительно вилочного соединения 1120

Служебные средства параллелизма в сравнении с традиционным подходом к многозадачности в Java 1121

Глава 29. Потоковый прикладной интерфейс API 1123Основные положения о потоках данных 1123

Потоковые интерфейсы 1124Получение потока данных 1127Простой пример потока данных 1128

Операции сведения 1132Параллельные потоки данных 1135Отображение 1138Накопление 1143Итераторы и потоки данных 1147

Применение итератора в потоке данных 1147

Java The Complete Reference.indb 22 10.05.2018 23:12:05

Page 17: СодержаниеВложенные и внутренние классы 207 ... Вложенные интерфейсы 263 Java The Complete Reference.indb 10 10.05.2018 23:12:04

Содержание 23

Применение итератора-разделителя 1149Дальнейшее изучение потокового прикладного интерфейса API 1152

Глава 30. Регулярные выражения и другие пакеты 1153Обработка регулярных выражений 1153

Класс Pattern 1154Класс Matcher 1154Синтаксис регулярных выражений 1155Примеры, демонстрирующие совпадение с шаблоном 1156Два варианта сопоставления с шаблоном 1162Дальнейшее изучение регулярных выражений 1163

Рефлексия 1163Удаленный вызов методов 1167

Простое приложение “клиент-сервер”, использующее механизм RMI 1168Форматирование даты и времени средствами пакета java.text 1171

Класс DateFormat 1172Класс SimpledateFormat 1174

Пакеты из прикладного интерфейса API даты и времени 1176Основные классы даты и времени 1177Форматирование даты и времени 1178Синтаксический анализ символьных строк даты и времени 1181Дальнейшее изучение пакета java.time 1182

Часть III. Введение в программирование ГПИ средствами Swing 1183

Глава 31. Введение в библиотеку Swing 1185Происхождение библиотеки Swing 1185Построение библиотеки Swing на основе библиотеки AWT 1186Главные особенности библиотеки Swing 1186

Легковесные компоненты Swing 1187Подключаемый стиль оформления 1187

Связь с архитектурой MVC 1188Компоненты и контейнеры 1189

Компоненты 1189Контейнеры 1190Панели контейнеров верхнего уровня 1190

Пакеты библиотеки Swing 1191Простое Swing-приложение 1192Обработка событий 1196Рисование средствами Swing 1200

Основы рисования 1200Вычисление области рисования 1202Пример рисования 1203

Глава 32. Исследование библиотеки Swing 1207Классы JLabel и ImageIcon 1207Класс JTextField 1209Кнопки из библиотеки Swing 1211

Класс JButton 1212Класс JToggleButton 1214

Java The Complete Reference.indb 23 10.05.2018 23:12:05

Page 18: СодержаниеВложенные и внутренние классы 207 ... Вложенные интерфейсы 263 Java The Complete Reference.indb 10 10.05.2018 23:12:04

24 Содержание

Флажки 1217Кнопки-переключатели 1218

Класс JTabbedPane 1221Класс JScrollPane 1223Класс JList 1225Класс JComboBox 1229Деревья 1232Класс JTable 1236

Глава 33. Введение в меню Swing 1239Основные положения о меню 1239Краткий обзор классов JMenuBar, JMenu и JMenuItem 1241

Класс JMenuBar 1241Класс JMenu 1243Класс JMenuItem 1244

Создание главного меню 1245Ввод мнемоники и оперативных клавиш в меню 1249Ввод изображений и всплывающих подсказок в пункты меню 1251Классы JRadioButtonMenuItem и JCheckBoxMenuItem 1253Создание всплывающего меню 1255Создание панели инструментов 1259Действия 1262Составление окончательного варианта программы MenuDemo 1268Дальнейшее изучение библиотеки Swing 1274

Часть IV. Введение в программирование ГПИ средствами JavaFX 1275Глава 34. Введение в JavaFX 1277

Основные понятия JavaFX 1278Пакеты JavaFX 1278Классы подмостков и сцены 1279Узлы и графы сцены 1279Компоновки 1279Класс приложения и методы его жизненного цикла 1280Запуск JavaFX-приложения 1280

Скелет JavaFX-приложения 1281Компиляция и выполнение JavaFX-приложения 1285Поток исполнения приложения 1286Метка — простейший элемент управления в JavaFX 1286Применение кнопок и событий 1288

Основы обработки событий в JavaFX 1289Элемент управления экранной кнопкой 1290Демонстрация обработки событий на примере экранных кнопок 1291

Рисование непосредственно на холсте 1294

Глава 35. Элементы управления JavaFX 1301Классы Image и ImageView 1301

Ввод изображения в метку 1304Ввод изображения в экранную кнопку 1306

Класс ToggleButton 1309Класс RadioButton 1312

Обработка событий изменения в группе кнопок-переключателей 1316Другой способ управления кнопками-переключателями 1317

Java The Complete Reference.indb 24 10.05.2018 23:12:05

Page 19: СодержаниеВложенные и внутренние классы 207 ... Вложенные интерфейсы 263 Java The Complete Reference.indb 10 10.05.2018 23:12:04

Содержание 25

Класс CheckBox 1320Класс ListView 1325

Представление списка с полосами прокрутки 1329Активизация режима одновременного выбора нескольких элементов из списка 1330

Класс ComboBox 1331Класс TextField 1335Класс ScrollPane 1338Класс TreeView 1342Эффекты и преобразования 1347

Эффекты 1348Преобразования 1349Демонстрация эффектов и преобразований 1350

Ввод всплывающих подсказок 1354Отключение элементов управления 1354

Глава 36. Введение в меню JavaFX 1355Основные положения о меню 1355Краткий обзор классов MenuBar, Menu и MenuItem 1357

Класс MenuBar 1357Класс Menu 1358Класс MenuItem 1359

Создание главного меню 1360Ввод мнемоники и оперативных клавиш в меню 1366Ввод изображений в пункты меню 1368Классы RadioMenuItem и CheckMenuItem 1369Создание контекстного меню 1372Создание панели инструментов 1375Составление окончательного варианта приложения MenuDemo 1378Дальнейшее изучение JavaFX 1385

Часть V. Применение Java 1387

Глава 37. Компоненты Java Beans 1389Общее представление о компонентах Java Beans 1389Преимущества компонентов Java Beans 1390Самоанализ 1390

Проектные шаблоны для свойств компонентов Java Beans 1391Проектные шаблоны для событий 1392Методы и проектные шаблоны 1393Применение интерфейса BeanInfo 1393

Привязанные и ограниченные свойства 1394Сохраняемость компонентов Java Beans 1394Настройщики 1395Прикладной интерфейс Java Beans API 1395

Класс Introspector 1398Класс PropertyDescriptor 1398Класс EventSetDescriptor 1398Класс MethodDescriptor 1398

Пример компонента Java Bean 1398

Java The Complete Reference.indb 25 10.05.2018 23:12:05

Page 20: СодержаниеВложенные и внутренние классы 207 ... Вложенные интерфейсы 263 Java The Complete Reference.indb 10 10.05.2018 23:12:04

26 Содержание

Глава 38. Введение в сервлеты 1403Предпосылки для разработки сервлетов 1403Жизненный цикл сервлета 1404Варианты разработки сервлетов 1405Применение контейнера сервлетов Tomcat 1406Простой пример сервлета 1407

Создание и компиляция исходного кода сервлета 1408Запуск контейнера сервлетов Tomcat на выполнение 1409Запуск веб-браузера и запрос сервлета 1409

Прикладной интерфейс Servlet API 1409Пакет javax.servlet 1410

Интерфейс Servlet 1410Интерфейс ServletConfig 1411Интерфейс ServletContext 1411Интерфейс ServletRequest 1412Интерфейс ServletResponse 1413Класс GenericServlet 1413Класс ServletInputStream 1414Класс ServletOutputStream 1414Класс ServletException 1414

Ввод параметров сервлета 1414Пакет javax.servlet.http 1416

Интерфейс HttpServletRequest 1417Интерфейс HttpServletResponse 1418Интерфейс HttpSession 1419Класс Cookie 1419Класс HttpServlet 1421

Обработка HTTP-запросов и ответов 1422Обработка HTTP-запросов типа GET 1422Обработка HTTP-запросов типа POST 1424

Применение cookie-файлов 1425Отслеживание сеансов связи 1427

Часть VI. Приложения 1429

Приложение A. Применение документирующих комментариев в Java 1431

Дескрипторы утилиты javadoc 1431Дескриптор @author 1432Дескриптор {@code} 1433Дескриптор @deprecated 1433Дескриптор {@docRoot} 1433Дескриптор @exception 1433Дескриптор @hidden 1433Дескриптор {@index} 1434Дескриптор {@inheritDoc} 1434Дескриптор {@link} 1434Дескриптор {@linkplain} 1434Дескриптор {@literal} 1434Дескриптор @param 1435Дескриптор @provides 1435Дескриптор @return 1435

Java The Complete Reference.indb 26 10.05.2018 23:12:05

Page 21: СодержаниеВложенные и внутренние классы 207 ... Вложенные интерфейсы 263 Java The Complete Reference.indb 10 10.05.2018 23:12:04

Содержание 27

Дескриптор @see 1435Дескриптор @serial 1436Дескриптор @serialData 1436Дескриптор @serialField 1436Дескриптор @since 1436Дескриптор @throws 1436Дескриптор @uses 1436Дескриптор {@value} 1437Дескриптор @version 1437

Общая форма документирующих комментариев 1437Результаты, выводимые утилитой javadoc 1437Пример применения документирующих комментариев 1438

Приложение Б. Краткий обзор Java Web Start 1440Назначение Java Web Start 1440Главные элементы Java Web Start 1441

Упаковка приложений Java Web Start в архивный JAR-файл 1441Подписание приложений Java Web Start 1442Запуск приложений Java Web Start с помощью JNLP-файла 1443Связывание приложения Java Web Start с JNLP-файлом 1444

Экспериментирование с Java Web Start в локальной файловой системе 1445Создание архивного JAR-файла для приложения ToggleButtonDemo 1446Создание хранилища ключей и подписание архивного JAR-файла 1447Создание JNLP-файла для запуска приложения ToggleButtonDemo 1448Создание краткого HTML-файла StartTBD.html 1449Ввод JNLP-файла в список Exception Site List на панели управления Java 1449Выполнение приложения ToggleButtonDemo из браузера 1450

Выполнение приложений Java Web Start с помощью утилиты javaws 1450Выполнение аплетов средствами Java Web Start 1450

Приложение В. Утилита JShell 1451Основные положения об утилите JShell 1451Перечисление, редактирование и повторное выполнение кода 1454Ввод метода 1455Создание класса 1456Применение интерфейса 1457Вычисление выражений и встроенных переменных 1458Импорт пакетов 1459Исключения 1460Другие команды JShell 1460Дальнейшее изучение JShell 1461

Приложение Г. Аплеты 1463Два типа аплетов 1463Основы разработки аплетов 1464

Класс Applet 1465Архитектура аплетов 1465Скелет аплета 1466

Инициализация и прекращение работы аплета 1468Аплеты на основе библиотеки Swing 1469

Предметный указатель 1472

Java The Complete Reference.indb 27 10.05.2018 23:12:06