Книга известного гуру в области программирования посвящена новой версии одного из наиболее популярных и совершенных языков - Java. Построенная в виде учебного и справочного пособия, она является превосходным источником исчерпывающей информации по последней версии платформы Java, Java SE 6, и позволяет практически с нуля научиться разрабатывать приложения и аплеты производственного качества. Помимо синтаксиса самого языка и фундаментальных принципов программирования, в книге подробно рассматриваются такие сложные вопросы, как ключевые библиотеки Java API, каркас коллекций, создание аплетов и сервлетов, AWT, Swing и Java Beans. Немалое внимание уделяется вводу-выводу, работе в сети, регулярным выражениям и обработке строк. Изобилие реальных примеров существенно упрощает усвоение материала. Книга ориентирована на программистов и разработчиков различной квалификации, а также будет полезна студентам и преподавателям соответствующих специальностей.
Название: Полный справочник по Java Автор: Герберт Шилдт Издательство: Вильямс Год: 2007 Страниц: 1034 Формат: DJVU Размер: 28,2 МБ ISBN: 978-5-8459-1168-1 Качество: Отличное Серия или Выпуск: Полный справочник
Содержание:
Об авторе Предисловие Книга для всех программистов Что внутри Коды примеров доступны в Web Особые благодарности Для дальнейшего изучения От издательства Часть I. Язык Java Глава 1. История и развитие языка Java Происхождение языка Java Зарождение современного программирования: язык С Следующий шаг: язык C++ Предпосылки к созданию языка Java Создание языка Java Связь с языком С# Как язык Java изменил Internet Аплеты Java Безопасность Переносимость Магия Java: байт-код Сервлеты: серверные Java-программы Терминология, связанная с 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() и endsWith() Сравнение equals() и операции == compareTo() Поиск строк Модификация строк substring() concat() replace() trim () Преобразование данных с помощью valueOf() Изменение регистра символов в строке Дополнительные методы String StringBuffer Конструкторы StringBuffer length() и capacity() ensureCapacity() setLength() charAt() и setCharAt() getChars() append() insert() reverse() delete() и 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() и интерфейса Cloneable Class ClassLoader Math Трансцендентные функции Экспоненциальные функции Функции округления Прочие методы Math StrictMath Compiler Thread, ThreadGroup и Runnable Интерфейс Runnable Thread ThreadGroup ThreadLocalи InheritableThreadLocal Package RuntimePermission Throwable SecurityManager StackTraceElement Enum Интерфейс CharSequence Интерфейс Comparable Интерфейс Appendable Интерфейс Iter able Интерфейс Readable Вложенные пакеты j ava.lang java.lang.annotation java.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 Работа с картами Интерфейсы Map Классы Map Компараторы Использование компараторов Алгоритмы коллекций Arrays Зачем нужны обобщенные коллекции? Унаследованные классы и интерфейсы Интерфейс Enumeration Vector Stack Dictionary Hashtable Properties Использование store () и load () Заключительные соображения по поводу коллекций Глава 18. java.util: прочие служебные классы StringTokenizer BitSet Date Calendar GregorianCalendar TimeZone SimpleTimeZone Locale Random Observable Интерфейс Observer Пример использования Ob s e rve г Timer и TimerTask Currency Formatter Конструкторы Formatter Методы Formatter Основы форматирования Форматирование строк и символов Форматирование чисел Форматирование времени и даты Спецификаторы %n и %% Указание минимальной ширины поля Указание точности Использование флагов формата Выравнивание вывода Флаги пробела, +, 0 и ( Флаг "запятая" Флаг # Опция верхнего регистра Использование индекса аргументов Подключение Java-функции printf() Scanner Конструкторы Scanner Основы сканирования Некоторые примеры применения Scanner - Установка разделителей Прочие возможности Scanner Классы ResourceBundle, ListResourceBundle и PropertyResourceBundle Прочие служебные классы и интерфейсы Вложенные пакеты j ava.util java.util.concurrent, java.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 Каталоги Использование FilenameFilter Альтернатива - listFiles() Создание каталогов Интерфейсы Closeable и Flushable Класс Stream Байтовые потоки InputStream OutputStream FilelnputStream FileOutputStream ByteArraylnputStream ByteArrayOutputStream Фильтруемые потоки байтов Буферизуемые потоки байтов Символьные потоки Reader Writer FileReader FileWriter CharArrayReader CharArrayWriter BufferedReader BufferedWriter PushbackReader PrintWriter Класс Console Использование потокового ввода-вывода Усовершенствование wc() применением StreamTokenizer Сериализация Serializable Externalizable ObjectOutput ObjectOutputStream Objectlnput ObjectlnputStream Пример сериализации Преимущества потоков Глава 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 Класс Key Event Класс 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 MemoryImageSource Интерфейс 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 Пример bean-компонента Глава 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 Интерфейс ServletConf ig Интерфейс ServletContext Интерфейс ServletRequest Интерфейс ServletResponce Класс GenericServlet Класс ServletlnputStream Класс ServletOutputStream Классы ServletException Чтение параметров сервлета Пакет javax. servlet. http Интерфейс HttpServletRequest Интерфейс HttpServletResponse Интерфейс HttpSession Интерфейс HttpSessionBindingListener Класс Cookie Класс HttpServlet Класс HttpSessionEvent Класс HttpSessionBindingEvent Обработка HTTP-запросов и откликов Обработка HTTP-запросов GET Обработка HTTP-запросов POST Использование cookie-наборов Отслеживание сеансов Часть IV. Применения Java Глава 32. Финансовые аплеты и сервлеты Расчет платежей по ссуде Поля RegPay Метод init() Метод makeGUI() Метод actionPerformed() Метод compute() Расчет будущей стоимости вклада Расчет первоначальной суммы вклада, необходимой для достижения будущей стоимости Расчет первоначальной суммы вклада, необходимой для получения желаемого годового дохода Нахождение максимального годового дохода для данной суммы вклада Нахождение остатка баланса по ссуде Создание финансовых сервлетов Преобразование аплета RegPay в сервлет Сервлет RegPay Самостоятельная работа Глава 33. Создание утилиты загрузки на Java Загрузка данных из Internet Обзор утилиты Download Manager Класс Download Переменные класса Download Конструктор класса Download Метод download() Метод run() Метод stateChanged() Методы действия и средства доступа Класс ProgressRenderer Класс DownloadsTableModel Метод addDownload() Метод clearDownload() Метод getColumnClass() Метод getValueAt() Метод update() Класс DownloadManager Переменные класса DownloadManager Конструктор DownloadManager Метод verifyUrlO Метод tableSelectionChanged() Метод updateButtons() Обработка событий действий Компиляция и запуск утилиты Download Manager Расширение утилиты Download Manager Приложение А. Использование комментариев документации Дескрипторы утилиты javadoc $author {@code} @deprecated {@docRoot} @exception {@inheritDoc} {@link} {@linkplain} {@literal} @param @return @see @serial @serialData @serialField @since @throws {@value} @version Общая форма комментариев документации Вывод утилиты javadoc Пример использования комментариев документации Предметный указатель