Предисловие	13
 Java SE5 и SE6	14
 Благодарности	14
 Глава 1. Введение в объекты	17
 Развитие абстракции	18
 Объект имеет интерфейс	20
 Объект предоставляет услуги	22
 Скрытая реализация	23
 Повторное использование реализации	24
 Наследование	25
 Взаимозаменяемые объекты и полиморфизм	29
 Однокорневая иерархия	33
 Контейнеры	33
 Параметризованные типы	35
 Создание, использование объектов и время их жизни	36
 Обработка исключений: борьба с ошибками	38
 Параллельное выполнение	38
 Java и Интернет	39
 Резюме	47
 Глава 2. Все является объектом	48
 Для работы с объектами используются ссылки	48
 Все объекты должны создаваться явно	49
 Объекты никогда не приходится удалять	53
 Создание новых типов данных	54
 Методы, аргументы и возвращаемые значения	56
 Создание программы на Java	58
 Ключевое слово static	60
 Наша первая программа на Java	61
 Комментарии и встроенная документация	64
 Стиль оформления программ	70
 Резюме	70
 Глава 3. Операторы	71
 Простые команды печати	71
 Операторы Java	72
 Литералы	82
 В Java отсутствует sizeof()	92
 Резюме	100
 Глава 4. Управляющие конструкции	101
 Синтаксис foreach	105
 return	107
 break и continue	108
 Нехорошая команда goto	109
 Резюме	115
 Глава 5. Инициализация и завершение	116
 Конструктор гарантирует инициализацию	116
 Перегрузка методов	118
 Очистка: финализация и сборка мусора	130
 Инициализация членов класса	137
 Инициализация конструктором	140
 Инициализация массивов	146
 Резюме	151
 Глава 6. Управление доступом	152
 Пакет как библиотечный модуль	153
 Спецификаторы доступа Java	159
 Интерфейс и реализация	163
 Доступ к классам	164
 Резюме	167
 Глава 7. Повторное использование классов	169
 Синтаксис композиции	170
 Синтаксис наследования	172
 Делегирование	176
 Сочетание композиции и наследования	178
 Композиция в сравнении с наследованием	184
 protected	185
 Восходящее преобразование типов	186
 Ключевое слово final	188
 Инициализация и загрузка классов	195
 Резюме	197
 Глава 8. Полиморфизм	198
 Снова о восходящем преобразовании	199
 Особенности	201
 Конструкторы и полиморфизм	208
 Ковариантность возвращаемых типов	216
 Разработка с наследованием	217
 Резюме	220
 Глава 9. Интерфейсы	221
 Абстрактные классы и методы	221
 Интерфейсы	224
 Отделение интерфейса от реализации	227
 Расширение интерфейса через наследование	233
 Интерфейсы как средство адаптации	236
 Вложенные интерфейсы	239
 Интерфейсы и фабрики	242
 Резюме	244
 Глава 10. Внутренние классы	245
 Создание внутренних классов	245
 Связь с внешним классом	246
 Конструкции .this и .new	248
 Внутренние классы и восходящее преобразование	249
 Безымянные внутренние классы	253
 Внутренние классы: зачем?	261
 Наследование от внутренних классов	272
 Можно ли переопределить внутренний класс?	272
 Локальные внутренние классы	274
 Резюме	276
 Глава 11. Коллекции объектов	277
 Параметризованные и типизованные контейнеры	277
 Основные концепции	280
 Добавление групп элементов	281
 List	285
 Итераторы	288
 LinkedList	291
 Стек	292
 Множество	294
 Карта	296
 Очередь	298
 PriorityQueue	299
 Collection и Iterator	301
 Идиома «метод-адаптер»	306
 Резюме	309
 Глава 12. Обработка ошибок и исключения	310
 Основные исключения	310
 Перехват исключений	312
 Создание собственных исключений	314
 Спецификации исключений	319
 Перехват произвольных исключений	320
 Стандартные исключения Java	328
 Завершение с помощью finally	330
 Использование finally с return	334
 Ограничения при использовании исключений	336
 Конструкторы	339
 Идентификация исключений	343
 Альтернативные решения	344
 Резюме	351
 Глава 13. Информация о типах	352
 Необходимость в динамическом определении типов (RTTI)	352
 Регистрация фабрик	372
 Рефлексия: динамическая информация о классе	376
 Динамические посредники	380
 Объекты с неопределенным состоянием	384
 Интерфейсы и информация о типах	390
 Резюме	394
 Глава 14. Параметризация	397
 Простая параметризация	398
 Параметризованные интерфейсы	404
 Параметризованные методы	407
 Построение сложных моделей	419
 Ограничения	437
 Метасимволы	440
 Резюме	452
 Глава 15. Массивы	454
 Особенности массивов	454
 Массив как объект	456
 Возврат массива	458
 Многомерные массивы	460
 Массивы и параметризация	463
 Создание тестовых данных	465
 Создание массивов с использованием генераторов	470
 Вспомогательный инструментарий Arrays	474
 Резюме	482
 Глава 16. Система ввода/вывода Java	483
 Класс File	484
 Ввод и вывод	489
 Добавление атрибутов и интерфейсов	491
 Классы Reader и Writer	494
 RandomAccessFile: сам по себе	497
 Типичное использование потоков ввода/вывода	498
 Средства чтения и записи файлов	505
 Стандартный ввод/вывод	507
 Новый ввод/вывод (nio)	510
 Сжатие данных	531
 Сериализация объектов	536
 Предпочтения	553
 Резюме	555
 Глава 17. Параллельное выполнение	557
 Класс Thread	559
 Исполнители	561
 Совместное использование ресурсов	578
 Взаимодействие между потоками	598
 Взаимная блокировка	602
 Новые библиотечные компоненты	607
 CountDownLatch	607
 CyclicBarrier	609
 DelayQueue	611
 PriorityBlockingQueue	614
 Семафоры	619
 Exchanger	623
 Моделирование	624
 Резюме	629
 Алфавитный указатель	631