Полный справочник по Java

Справочное руководство по Java.

Герберт Шилдт «Полный справочник по Java» Вильямс, 2009 год, 1034 стр. (27,4 мб. djvu)

Полный справочник по Java Книга Герберта Шилдта выдерживает уже седьмое издание. Известный своими книгами в области программирования он представляет свое справочное руководство по одному из наиболее популярных и востребованных языков — Java. Книга вобрал в себя огромный объем информации и может использоваться, как виде учебника для начинающих, так и в виде справочного пособия для практикующих программистов.

Полный справочник по Java станет для вас глубоким кладезем исчерпывающей информации по версии платформы Java, Java SE 6. Не стоит терять возможности использовать книгу, что позволит в любой момент обратится к материалу руководства за консультацией при разработке приложений и аплетов высокого качества.

Найдется все и информация по синтаксису самого языка, библиотекам Java API, примерам разработки аплетов и сервлетов, AWT, Swing и Java Beans, технологии ввода-вывода, работе в сети, регулярным выражениям и обработке строк. Прикладные примеры, которых достаточно в справочнике помогут при изучении и понимании особенностей языка Java.

Оглавление книги

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

Глава 1. История и развитие языка Java
Происхождение языка J ava
Зарождение современного программирования: язык С
Следующий шаг: язык C++
Предпосылки к созданию языка Java
Создание языка Java
Связь с языком C#
Как язык Java изменил Internet
Аплеты Java
Безопасность
Переносимость
Магия Java: байт-код
Сервлеты: серверные Java-nporpaMMbi
Терминология, связанная с Java
Простота
Объектная ориентированность
Устойчивость
Многопоточность
Архитектурная нейтральность
Интерпретируемость и высокая производительность
Распределенность
Динамический характер
Эволюция языка Java
Java SE 6
Культура инновации

Глава 2. Обзор языка Java
Объектно-ориентированное программирование
Две концепции
Абстракция
Три принципа ООП
Первый пример простой программы
Ввод кода программы
Компиляция программы
Более подробное рассмотрение первого примера программы
Второй пример короткой программы
Два управляющих оператора
Оператор if
Цикл for
Использование блоков кода
Вопросы лексики
Пробел
Идентификаторы
Константы
Комментарии
Разделители
Ключевые слова Java
Библиотеки классов Java

Глава 3. Типы данных, переменные и массивы
Java — строго типизированный язык
Элементарные типы
Целочисленные значения
byte
short
int
long
Типы с плавающей точкой
float
double
Символы
Булевские значения
Более подробное рассмотрение констант
Целочисленные константы
Константы с плавающей точкой
Булевские константы
Символьные константы
Строковые константы
Переменные
Объявление переменной
Динамическая инициализация
Область определения и время существования переменных
Преобразование и приведение типов
Автоматическое преобразование типов в Java
Приведение несовместимых типов
Автоматическое повышение типа в выражениях
Правила повышения типа
Массивы
Одномерные массивы
Многомерные массивы
Альтернативный синтаксис объявления массивов
Несколько слов о строках
Замечание по поводу указателей для программистов на C/C++

Глава 4. Операции
Арифметические операции
Основные арифметические операции
Операция деления по модулю
Составные арифметические операции с присваиванием
Инкремент и декремент
Побитовые операции
Побитовые логические операции
Сдвиг влево
Сдвиг вправо
Сдвиг право без учета знака
Операции сравнения
Булевские логические операции
Замыкающие логические операции
Операция присваивания
Операция ?
Приоритеты операций
Использование круглых скобок

Глава 5. Управляющие операторы
Операторы выбора
Оператор if
Оператор switch
Операторы цикла
Цикл while
Цикл do-while
Цикл for
Вложенные циклы
Операторы перехода
Использование оператора break
Использование оператора continue
Оператор return

Глава 6. Знакомство с классами
Основы классов
Общая форма класса
Простой класс
Объявление объектов
Более подробное рассмотрение операции new
Присваивание переменных объектных ссылок
Знакомство с методами
Добавление метода к классу Box
Возвращение значения
Добавление метода, принимающего параметры
Конструкторы
Конструкторы с параметрами
Ключевое слово this
Сокрытие переменной экземпляра
Сборка мусора
Метод finalize ()
Класс Stack

Глава 7. Более пристальный взгляд на методы и классы
Перегрузка методов
Перегрузка конструкторов
Использование объектов в качестве параметров
Более пристальный взгляд на передачу аргументов
Возврат объектов
Рекурсия
Введение в управление доступом
Что такое static
Знакомство с ключевым словом final
Повторное рассмотрение массивов
Представление вложенных и внутренних классов
Описание класса String
Использование аргументов командной строки
Varargs: аргументы переменной длины
Перегрузка методов vararg
Параметры переменной длины и неопределенность

Глава 8. Наследование
Основы наследования
Доступ к членам и наследование
Более реальный пример
Переменная суперкласса может ссылаться на объект подкласса
Использование ключевого слова super
Использование ключевого слова super для вызова конструкторов суперкласса
Второе применение ключевого слова super
Создание многоуровневой иерархии
Порядок вызова конструкторов
Переопределение методов
Динамическая диспетчеризация методов
Для чего нужны переопределенные методы?
Использование переопределения методов
Использование абстрактных классов
Использование ключевого слова final в сочетании с наследованием
Использование ключевого слова final для предотвращения переопределения
Использование ключевого слова final для предотвращения наследования
Класс Object

Глава 9. Пакеты и интерфейсы
Пакеты
Определение пакета
Поиск пакетов и переменная среды CLASSPATH Краткий пример пакета Защита доступа
Пример защиты доступа Импорт пакетов Интерфейсы
Определение интерфейса Реализация интерфейсов
Доступ к реализациям через ссылки на интерфейсы Вложенные интерфейсы Использование интерфейсов Переменные в интерфейсах Возможность расширения интерфейсов

Глава 10. Обработка исключений
Основы обработки исключений Типы исключений Необработанные исключения Использование try и catch
Отображение описания исключения Множественные операторы catch Вложенные операторы try throw throws finally
Встроенные исключения Java Создание собственных подклассов исключений Сцепленные исключения Использование исключений

Глава 11. Многопоточное программирование
Модель потоков Java Приоритеты потоков Синхронизация Обмен сообщениями Класс Thread и интерфейс Runnable Главный поток Создание потока
Реализация Runnable Расширение Thread Выбор подхода Создание множества потоков Использование isAlive () и join ()
Приоритеты потоков Синхронизация Использование синхронизированных методов
Оператор synchronized
Межпотоковые коммуникации
Взаимная блокировка
Приостановка, возобновление и останов потоков
Приостановка, возобновление и останов потоков в Java 1.1
и более ранних версиях
Современный способ приостановки, возобновления и остановки потоков
Использование многопоточности

Глава 12. Перечисления, автоупаковка и аннотации (метаданные)
Перечисления
Основные понятия о перечислениях
Методы values () и valueOf ()
Перечисления в Java являются типами классов
Перечисления наследуются от Enum
Еще один пример перечисления
Оболочки типов
Character
Boolean
Оболочки числовых типов
Автоупаковка
Автоупаковка и методы
Автоупаковка/распаковка происходит в выражениях
Автоупаковка/распаковка значений Boolean и Character
Автоупаковка/распаковка помогает предотвратить ошибки
Предостережения
Аннотации (метаданные)
Основы аннотирования
Спецификация политики удержания
Получение аннотаций во время выполнения с использованием рефлексии
Второй пример применения рефлексии
Получение всех аннотаций
Интерфейс AnnotatedElement
Использование значений по умолчанию
Аннотация-маркер
Одночленные аннотации
Встроенные аннотации
Некоторые ограничения

Глава 13. Ввод-вывод, аплеты и другие темы
Основы ввода-вывода
Потоки
Байтовые и символьные потоки
Классы байтовых потоков
Классы символьных потоков
Предопределенные потоки
Чтение консольного ввода
Чтение символов
Чтение строк
Запись консольного вывода
Класс PrintWriter
Чтение и запись файлов
Основы организации аплетов
Модификаторы transient и volatile
Использование instanceof
strictfp
Родные методы
Проблемы, связанные с родными методами
Использование assert
Опции включения и отключения утверждений
Статический импорт
Вызов перегруженных конструкторов через this ()

Глава 14. Обобщения
Что такое обобщения?
Простой пример обобщения
Обобщения работают только с объектами
Обобщенные типы отличаются в зависимости от типов-аргументов
Обобщения повышают безопасность типов
Обобщенный класс с двумя параметрами типа
Общая форма обобщенного класса
Ограниченные типы
Использование шаблонных аргументов
Ограниченные шаблоны
Создание обобщенного метода
Обобщенные конструкторы
Обобщенные интерфейсы
Raw-типы и унаследованный код
Иерархии обобщенных классов
Использование обобщенного суперкласса
Обобщенный подкласс
Сравнение типов обобщенной иерархии во время выполнения
Приведение
Переопределение методов в обобщенном классе
Очистка
Методы-мосты
Ошибки неоднозначности
Некоторые ограничения обобщений
Нельзя создавать экземпляр типа параметра
Ограничения на статические члены
Ограничения обобщенных массивов
Ограничения обобщенных исключений
Заключительные мысли по поводу обобщений

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

Глава 15. Обработка строк
Конструкторы строк
Конструкторы строк, добавленные в J2SE 5
Длина строки
Специальные строковые операции
Строковые литералы
Конкатенация строк
Конкатенация строк с другими типами данных
Преобразование строк и toString ()
Извлечение символов
charAt()
getChars()
getBytes ()
toCharArray()
Сравнение строк
equals() иequalsIgnoreCase()
regionMatches()
startsWith() и endsWithO
Сравнение equals () и операции ==
сошрагеТо ()
Поиск строк
Модификация строк
substring()
concatO
replace()
trim()
Преобразование данных с помощью valueOf ()
Изменение регистра символов в строке
Дополнительные методы String
StringBuffer
Конструкторы StringBuffer
length() и capacity()
ensureCapacityО
setLengthf)
charAt() и setCharAt()
getChars()
append ()
insert ()
reverse ()
deleted и deleteCharAt ()
replace()
substring!)
Дополнительные методы StringBuffer
StringBuilder

Глава 16. Пакет java.lang
Оболочки примитивных типов
Number
Double и Float
islnfinite() иisNaN()
Byte, Short, Integer и Long
Преобразование чисел в строки и обратно
Character
Дополнения к Character для поддержки кодовых точек Unicode
Boolean
Void
Process
Runtime
Управление памятью
Выполнение других программ
ProcessBuilder
System
Использование currentTimeMills () для измерения времени выполнения программы
Использование аггаусору ()
Свойства окружения
Object
Использование clone () и интерфейса C’loneable
Class
ClassLoader
Math
Трансцендентные функции
Экспоненциальные функции
Функции округления
Прочие методы Math
StrictMath
Compiler
Thread, ThreadGroup и Runnable
Интерфейс Runnable
Thread
ThreadGroup
ThreadLocalи InheritableThreadLocal
Package
RuntimePermission
Throwable
SecurityManager
StackTraceElement
Enum
Интерфейс CharSequence
Интерфейс Comparable
Интерфейс Appendable
Интерфейс I ter able
Интерфейс Readable
Вложенные пакеты java. lang
java.lang.annotation
j ava.lang.instrument
java.lang.management
java.lang.ref
java.lang.reflect

глава 17. java. util: каркас коллекций
Обзор коллекций
Последние изменения в коллекциях
Обобщенные определения фундаментально изменяют систему коллекций
Средства автоматической упаковки используют примитивные типы
Стиль цикла “for-each”
Интерфейсы коллекций
Интерфейс Collection
Интерфейс List
Интерфейс Set
Интерфейс SortedSet
Интерфейс NavigableSet
Интерфейс Queue
Интерфейс Dequeue
Классы коллекций
Класс ArrayList
Класс LinkedList
Класс HashSet
Класс LinkedHashSet
Класс TreeSet
Класс PriorityQueue
Класс ArrayDeque
Класс EnumSet
Доступ к коллекциям через итератор
Использование Iterator
Версия “for-each” цикла for как альтернатива итераторам
Использование пользовательских классов в коллекциях
Интерфейс RandomAccess
Работа с картами
Интерфейсы Мар
Классы Мар
Компараторы
Использование компараторов
Алгоритмы коллекций
Arrays
Зачем нужны обобщенные коллекции?
Унаследованные классы и интерфейсы
Интерфейс Enumeration
Vector
Stack
Dictionary
Hashtable
Properties
Использование store () и load ()
Заключительные соображения по поводу коллекций

Глава 18. java. util: прочие служебные классы
StringTokenizer
BitSet
Date
Calendar
GregorianCalendar
TimeZone
SimpleTimeZone
Locale
Random
Observable
Интерфейс Observer
Пример использования Observer
Timer и TimerTask
Currency
Formatter
Конструкторы Formatter
Методы Formatter
Основы форматирования
Форматирование строк и символов
Форматирование чисел
Форматирование времени и даты
Спецификаторы %п и %%
Указание минимальной ширины поля
Указание точности
Использование флагов формата
Выравнивание вывода
Флаги пробела, +, 0 и (
Флаг “запятая”
Флаг #
Опция верхнего регистра
Использование индекса аргументов
Подключение Java-функции printf ()
Scanner
Конструкторы Scanner
Основы сканирования
Некоторые примеры применения Scanner
Установка разделителей
Прочие возможности Scanner
Классы ResourceBundle, ListResourceBundle и PropertyResourceBundle
Прочие служебные классы и интерфейсы
Вложенные пакеты j ava. util
j ava.util.concurrent, j ava.util.concurrent.atomic,
java.util.concurrent.locks
java.util.jar
java.util.logging
java.util.prefs
java.util.regex
java.util.spi
java.util.zip

Глава 19. Ввод-вывод: пакет java. io
Классы и интерфейсы ввода-вывода Java
File
Усовершенствование wc () применением streamTokenizer Сериализация Serializable Externalizable ObjectOutput Obj ectOutputStream Objectlnput ObjectlnputStream
Каталоги
Использование FilenameFilter Альтернатива — listFiles ()
Создание каталогов 581
Интерфейсы Closeable и Flushable
Класс Stream Байтовые потоки InputStream OutputStream
FilelnputStream
FileOutputStream
ByteArraylnputStream ByteArrayOutputStream Фильтруемые потоки байтов
Буферизуемые потоки байтов
Символьные потоки Reader Writer FileReader FileWriter CharArrayReader CharArrayWriter BufferedReader BufferedWriter PushbackReader PrintWriter Класс Console
Использование потокового ввода-вывода
Пример сериализации
Преимущества потоков

Глава 20. Сеть
Основы работы с сетью
Сетевые классы и интерфейсы
InetAddress
Методы-фабрики
Методы экземпляра
Inet4Address и Inet6Address
Клиентские сокеты TCP/IP
Класс URL
URLConnection
HttpURLConnection
Класс URI
Cookie-наборы
Серверные сокеты TCP/IP
Дейтаграммы
DatagramSocket
DatagramPacket
Пример работы с дейтаграммами
Глава 21. Класс Applet
Два типа аплетов
Основы аплетов
Класс Applet
Архитектура аплетов
Скелет аплета
Инициализация и прекращение работы аплета
Переопределение update ()
Простые методы отображения аплетов
Запрос перерисовки
Простой аплет с баннером
Использование строки состояния
HTML-дескриптор APPLET
Передача параметров аплетам
Усовершенствование баннерного аплета
getDocumentBase() и getCodeBase()
AppletContext иshowDocument()
Интерфейс AudioClip
Интерфейс AppletStub
Консольный вывод

Глава 22. Обработка событий
Два механизма обработки событий
Модель делегации событий
События
Источники событий
Слушатели событий
Классы событий
Класс ActionEvent
Класс AdjustmentEvent
Класс ComponentEvent
Класс ContainerEvent
Класс FocusEvent
КлассinputEvent
Класс ItemEvent
Класс KeyEvent
Класс MouseEvent
Класс MouseWheelEvent
Класс TextEvent
Класс WindowEvent
Источники событий
Интерфейсы слушателей событий
Интерфейс ActionListener
Интерфейс AdjustmentListener
Интерфейс ComponentListener
Интерфейс ContainerListener
Интерфейс FocusListener
Интерфейс ItemListener
Интерфейс KeyListener
Интерфейс MouseListener
Интерфейс MouseMotionListener
Интерфейс MouseWheelListener
Интерфейс TextListener
Интерфейс WindowFocusListener
Интерфейс WindowListener
Использование модели делегации событий
Обработка событий мыши
Обработка событий клавиатуры
Классы адаптеров
Вложенные классы
Анонимные вложенные классы

Глава 23. Введение в AWT: работа с окнами, графикой и текстом
Классы AWT
Основы окон
Component
Container
Panel
Window
Frame
Canvas
Работа с рамочными окнами
Установка размеров окна
Сокрытие и отображение окна
Установка заголовка окна
Закрытие рамочного окна
Создание рамочного окна в аплете
Обработка событий в рамочном окне
Создание оконной программы
Отображение информации внутри окна
Работа с графикой
Рисование линий
Рисование прямоугольников
Рисование эллипсов и окружностей
Рисование дуг
Рисование многоугольников
Установка размеров графики
Работа с цветом
Методы Color
Установка режима рисования
Работа со шрифтами
Определение доступных шрифтов
Создание и выбор шрифта
Получение информации о шрифте
Управление выводом текста с использованием класса FontMetrics
Отображение множества строк текста
Центрирование текста
Выравнивание многострочного текста

Глава 24. Использование элементов управления, диспетчеров компоновки и меню AWT
Основы элементов управления
Добавление и удаление элементов управления
Реагирование на действия, производимые над элементами управления
HeadlessException
Метки
Использование кнопок
Обработка кнопок
Использование флажков
Обработка флажков
CheckboxGroup
Элементы управления выбором
Обработка списков выбора
Использование списков
Обработка списков
Управление линейками прокрутки
Обработка линеек прокрутки
Использование класса TextField
Обработка TextField
Использование TextArea
Диспетчеры компоновки
FlowLayout
BorderLayout
Использование Insets
GridLayout
CardLayout
GridBagLayout
Линейки меню и меню
Диалоговые окна
FileDialog
Обработка событий путем расширения компонентов AWT
Расширение класса Button
Расширение класса Checkbox
Расширение группы флажков
Расширение класса Choice
Расширение класса List
Расширение класса Scrollbar

Глава 25. Изображения
Форматы файлов
Основы работы с изображениями: создание, загрузка и отображение
Создание объекта Image
Загрузка изображения
Отображение изображения
Интерфейс ImageObserver
Двойная буферизация
MediaTracker
Интерфейс ImageProducer
MemorylmageSource
Интерфейс ImageConsumer
Класс PixelGrabber
Класс ImageFilter
Фильтр CropImageFilter
Фильтр RGBImageFilter
Аппликационная анимация
Дополнительные классы обработки изображений

Глава 26. Параллельные утилиты
Пакеты параллельного API
java.util.concurrent
java.util.concurrent.atomic
java.util.concurrent.locks
Использование объектов синхронизации
Semaphore
CountDownLatch
CyclicBarrier
Exchanger
Использование исполнителя
Простой пример исполнителя
Использование Callable и Future
Перечисление TimeUnit
Параллельные коллекции
Блокировки
Атомарные операции
Параллельные утилиты в сравнении с традиционным подходом в Java

Глава 27. N10, регулярные выражения и другие пакеты
Пакеты API ядра
NIO
Основы NIO
Наборы символов и селекторы
Использование системы NIO
Будущие перспективы NIO
Обработка регулярных выражений
Класс Pattern
Класс Matcher
Синтаксическая структура регулярного выражения
Пример совпадения с шаблоном
Два варианта сопоставления с шаблоном
Изучение регулярных выражений
Рефлексия
Удаленный вызов методов
Клиент-серверное приложение, использующее RMI
Форматирование текста
Класс DateFormat
Класс SimpledateFormat

Часть III. Разработка программного обеспечения с использованием Java

Глава 28. Java Beans
Что такое bean-компонент Java?
Преимущества bean-компонентов Java
Самодиагностика
Проектные шаблоны для свойств
Проектные шаблоны для событий
Методы и проектные шаблоны
Использование интерфейса Beanlnfo
Связанные и ограниченные свойства
Постоянство
Конфигураторы
Java Beans API
Introspector
PropertyDescriptor
EventSetDescriptor
MethodDescriptor

Глава 29. Введение в Swing
Истоки Swing
Классы Swing построены на основе AWT
Две ключевых особенности Swing
Компоненты Swing являются облегченными
Swing поддерживает подключаемый внешний вид
MVC
Компоненты и контейнеры
Компоненты
Контейнеры
Панели контейнеров верхнего уровня
Пакеты Swing
Простое Swing-приложение
Обработка событий
Создание Swing-аплета
Рисование в Swing
Основы рисования
Вычисление области рисования
Пример рисования

Глава 30. Дополнительные сведения о Swing
JLabel и Image Icon
JTextField
Кнопки Swing
JButton
JToggleButton
Флажки
Переключатели
JTabbedPane
JScrollPane
JList
JComboBox
Деревья
JTable
Продолжайте изучать Swing

Глава 31. Сервлеты
Предварительные сведения
Жизненный цикл сервлета
Использование Tomcat для разработки сервлетов
Простой сервлет
Создание и компиляция исходного кода сервлета
Запуск Tomcat
Запуск Web-браузера и запрос сервлета
Servlet API
Пакет javax.servlet
Интерфейс Servlet
Интерфейс ServletConfig
Интерфейс ServletContext
Интерфейс ServletRequest
Интерфейс ServletResponce
Класс GenericServlet
Класс ServletlnputStream
Класс ServletOutputStream
Классы ServletException
Чтение параметров сервлета
Пакет javax.servlet.http
Интерфейс HttpServletRequest
Интерфейс HttpServletResponse
Интерфейс HttpSession
Интерфейс HttpSessionBindingListener
Класс Cookie
Класс HttpServlet
Класс HttpSessionEvent
Класс HttpSessionBindingEvent
Обработка HTTP-запросов и откликов
Обработка HTTP-запросов GET
Обработка HTTP-запросов POST
Использование сооЫе-наборов
Отслеживание сеансов

Часть IV. Применения Java

Глава 32. Финансовые аплеты и сервлеты
Расчет платежей по ссуде
Поля RegPay
Метод init ()
Метод makeGUI ()
Метод actionPerformed()
Метод compute ()
Расчет будущей стоимости вклада
Расчет первоначальной суммы вклада, необходимой для достижения будущей стоимости
Расчет первоначальной суммы вклада, необходимой для получения желаемого годового дохода
Нахождение максимального годового дохода для данной суммы вклада
Нахождение остатка баланса по ссуде
Создание финансовых сервлетов
Преобразование аплета RegPay в сервлет
Сервлет RegPay
Самостоятельная работа

Глава 33. Создание утилиты загрузки на Java
Загрузка данных из Internet
Обзор утилиты Download Manager
Класс Download
Переменные класса Download
Конструктор класса Download
Метод download ()
Метод run ()
Метод stateChanged()
Методы действия и средства доступа
Класс ProgressRenderer
Класс DownloadsTableModel
Метод addDownloadO
Метод clearDownload()
Метод getColumnClass()
Метод getValueAt()
Метод update ()
Класс DownloadManager
Переменные класса DownloadManager
Конструктор DownloadManager
Метод verifyUrl()
Метод tableSelectionChanged()
Метод updateButtons()
Обработка событий действий
Компиляция и запуск утилиты Download Manager
Расширение утилиты Download Manager
Приложение А. Использование комментариев документации
Дескрипторы утилиты java doс
$author
{0code}
@deprecated
{SdocRoot}
©exception
{SinheritDoc}
{@link}
{Slinkplain}
{Qliteral}
@param
0return
0see
@serial
0serialData
0serialField
©since
©throws
{©value}
(Aversion
Общая форма комментариев документации
Вывод утилиты java doc
Пример использования комментариев документации
Предметный указатель

Скачать книгу бесплатно27,4 мб. djvu

 

Advanced Java. Видео

 

 

Похожая литература