Java нельзя понять, взглянув на него только как на коллекцию некоторых характеристик, - необходимо понять задачи этого языка как частные задачи программирования в целом. Эта книга - о проблемах программирования: почему они стали проблемами, и какой подход использует Java в их решении. Поэтому обсуждаемые в каждой главе черты языка неразрывно связаны с тем, как они используются для решения определенных задач. Эта книга, выдержавшая в оригинале не одно переиздание, за глубокое и поистине философское изложение тонкостей языка считается одним из лучших пособий для программирующих на Java. В этом издании автор учёл все изменения, внесённые в Java, и сообщает, что оно "предназначено только для Java SE5/6". Книга написана в качестве настольной специально как для опытных программистов, так и для новичков. И именно в этом кроется секрет её популярности во всём мире. Перевод с английского Е. Матвеева.
Содержание:
Предисловие Java SE5 и SE6 Благодарности Глава 1. Введение в объекты. Развитие абстракции . Объект имеет интерфейс Объект предоставляет услуги Скрытая реализация Повторное использование реализации Наследование Взаимозаменяемые объекты и полиморфизм Однокорневая иерархия Контейнеры Параметризованные типы Создание, использование объектов и время их жизни . . . Обработка исключений: борьба с ошибками Параллельное выполнение. Java и Интернет. Резюме Глава 2. Все является объектом Для работы с объектами используются ссылки. Все объекты должны создаваться явно. Объекты никогда не приходится удалять Создание новых типов данных Методы, аргументы и возвращаемые значения Создание программы на Java Ключевое слово static. Наша первая программа на Java Комментарии и встроенная документация Стиль оформления программ РезюмеГлава 3. Операторы Простые команды печати. Операторы Java Литералы В Java отсутствует sizeof(). Резюме Глава 4. Управляющие конструкции Синтаксис foreach return break и continue Нехорошая команда goto Резюме Глава 5. Инициализация и завершение Конструктор гарантирует инициализацию Перегрузка методов. Очистка: финализация и сборка мусора Инициализация членов класса Инициализация конструктором Инициализация массивов Резюме Глава 6. Управление доступом Пакет как библиотечный модуль. Спецификаторы доступа Java Интерфейс и реализация Доступ к классам Резюме Глава 7. Повторное использование классов. Синтаксис композиции Синтаксис наследования Делегирование . Сочетание композиции и наследования. Композиция в сравнении с наследованием protected. Восходящее преобразование типов Ключевое слово final. Инициализация и загрузка классов Резюме Глава 8. Полиморфизм Снова о восходящем преобразовании Особенности Конструкторы и полиморфизмКовариантность возвращаемых типов. Разработка с наследованием Резюме Глава 9. Интерфейсы. Абстрактные классы и методы Интерфейсы Отделение интерфейса от реализации. Расширение интерфейса через наследование Интерфейсы как средство адаптации Вложенные интерфейсы Интерфейсы и фабрики Резюме Глава 10. Внутренние классы Создание внутренних классов Связь с внешним классом Конструкции .this и .new Внутренние классы и восходящее преобразование. Безымянные внутренние классы. Внутренние классы: зачем?. Наследование от внутренних классов Можно ли переопределить внутренний класс? Локальные внутренние классы Резюме Глава 11. Коллекции объектов Параметризованные и типизованные контейнеры. Основные концепции. Добавление групп элементов List. Итераторы LinkedList. Стек Множество Карта Очередь . PriorityQueue Collection и Iterator Идиома «метод-адаптер» Резюме Глава 12. Обработка ошибок и исключения Основные исключения Перехват исключений Создание собственных исключенийСпецификации исключений. Перехват произвольных исключений Стандартные исключения Java Завершение с помощью finally Использование finally с return Ограничения при использовании исключений Конструкторы. Идентификация исключений Альтернативные решения. Резюме Глава 13. Информация о типах. Необходимость в динамическом определении типов (RTTI) Регистрация фабрик. Рефлексия: динамическая информация о классе Динамические посредники. Объекты с неопределенным состоянием Интерфейсы и информация о типах Резюме Глава 14. Параметризация. Простая параметризация Параметризованные интерфейсы. Параметризованные методы Построение сложных моделей Ограничения Метасимволы Резюме Глава 15. Массивы. Особенности массивов Массив как объект Возврат массива Многомерные массивы Массивы и параметризация. Создание тестовых данных. Создание массивов с использованием генераторов. Вспомогательный инструментарий Arrays Резюме Глава 16. Система ввода/вывода Java. Класс File. Ввод и вывод Добавление атрибутов и интерфейсов. Классы Reader и WriterRandomAccessFile: сам по себе Типичное использование потоков ввода/вывода Средства чтения и записи файлов. Стандартный ввод/вывод Новый ввод/вывод (nio) Сжатие данных Сериализация объектов Предпочтения Резюме Глава 17. Параллельное выполнение Класс Thread Исполнители Совместное использование ресурсов Взаимодействие между потоками Взаимная блокировка Новые библиотечные компоненты. CountDownLatch. CyclicBarrier. DelayQueue. PriorityBlockingQueue Семафоры Exchanger Моделирование Резюме Алфавитный указатель