| Программирование на языке Java |
| Революция по имени Java |
| История создания |
| Апплеты Java |
| Революционный язык программирования |
| Простота и мощь |
| Безопасность |
| Объектная ориентированность |
| Надежность |
| Интерактивность |
| Независимость от архитектуры ЭВМ |
| Интерпретация плюс высокая производительность |
| Простота изучения |
| Богатая объектная среда |
| Отличия Java от C |
| Глобальные переменные |
| Goto |
| Указатели |
| Распределение памяти |
| Хрупкие типы данных |
| Ненадежное приведение типов |
| Ненадежные списки аргументов |
| Раздельные файлы заголовков |
| Ненадежные структуры |
| Препроцессорная обработка |
| QED |
| Введение в язык Java |
| Типы В этой главе вы познакомитесь со всеми основными типами языка Java и увидите, как надо объявлять переменные, присваивать им значения и использовать выражения со смешанными типами. В данной главе мы и обсудим простые типы языка Java, оставив сложные типы до главы 7. |
| Простые типы |
| Целые числа |
| Числа с плавающей точкой |
| Приведение типа |
| Автоматическое преобразование типов в выражениях |
| Символы |
| Тип boolean |
| Массивы |
| Многомерные массивы |
| Знай свои типы |
| Операторы Операторы в языке Java—это специальные символы, которые сообщают транслятору о том, что вы хотите выполнить операцию с некоторыми операндами. Некоторые операторы требуют одного операнда, их называют унарными. Одни операторы ставятся перед операндами и называются префиксными, другие—после, их называют постфиксными операторами. Большинство же операторов ставят между двумя операндами, такие операторы называются инфиксными бинарными операторами. Существует тернарный оператор, работающий с тремя операндами. В Java имеется 44 встроенных оператора. Их можно разбить на 4 класса—арифметические, битовые, операторы сравнения и логические. |
| Арифметические операторы |
| Целочисленные битовые операторы |
| Сдвиги влево и вправо |
| Битовые операторы присваивания |
| Операторы отношения |
| Булевы логические операторы |
| Тернарный оператор if-then-else |
| Приоритеты операторов |
| Явные приоритеты |
| Управление выполнением программы |
| Условные операторы |
| Циклы |
| Исключения |
| Классы Базовым элементом объектно-ориентированного программирования в языке Java является класс. В этой главе Вы научитесь создавать и расширять свои собственные классы, работать с экземплярами этих классов и начнете использовать мощь объектно-ориентированного подхода. Напомним, что классы в Java не обязательно должны содержать метод main. Единственное назначение этого метода—указать интерпретатору Java, откуда надо начинать выполнение программы. Для того, чтобы создать класс, достаточно иметь исходный файл, в котором будет присутствовать ключевое слово class, и вслед за ним—допустимый идентификатор и пара фигурных скобок для его тела. |
| class Point |
| Переменные представителей (instance variables) |
| Оператор new |
| Объявление методов |
| Вызов метода |
| Скрытие переменных представителей |
| Конструкторы |
| Совмещение методов |
| this в конструкторах |
| Наследование |
| super |
| Замещение методов |
| Динамическое назначение методов |
| final |
| finalize |
| static |
| abstract |
| Классическое заключение |
| Пакеты и интерфейсы Пакет (package)—это некий контейнер, который используется для того, чтобы изолировать имена классов. Например, вы можете создать класс List, заключить его в пакет и не думать после этого о возможных конфликтах, которые могли бы возникнуть если бы кто-нибудь еще создал класс с именем List. |
| Интерфейс |
| Пакеты |
| Оператор package |
| Трансляция классов в пакетах |
| Оператор import |
| Ограничение доступа |
| Интерфейсы |
| Оператор interface |
| Оператор implements |
| Переменные в интерфейсах |
| Использование пакетов |
| Работа со строками В этой главе обсуждаются средства языка Java для работы со строками. В языках С и C отсутствует встроенная поддержка такого объекта, как строка. В них при необходимости передается адрес последовательности байтов, содержимое которых трактуется как символы до тех пор, пока не будет встречен нулевой байт, отмечающий конец строки. В пакет java.lang встроен класс, инкапсулирующий структуру данных, соответствующую строке. Этот класс, называемый String, не что иное, как объектное представление неизменяемого символьного массива. В этом классе есть методы, которые позволяют сравнивать строки, осуществлять в них поиск и извлекать определенные символы и подстроки. Класс StringBuffer используется тогда, когда строку после создания требуется изменять. |
| Конструкторы |
| Специальный синтаксис для работы со строками |
| Создание строк |
| Слияние строк |
| Последовательность выполнения операторов |
| Преобразование строк |
| Извлечение символов |
| Сравнение |
| Равенство |
| Упорядочение |
| indexOf и lastIndexOf |
| Модификация строк при копировании |
| valueOf |
| StringBuffer |
| Конструкторы |
| ensureCapacity |
| setLength |
| charAt и setCharAt |
| append |
| insert |
| Без строк не обойдешься |
| Обработка исключений В этой главе обсуждается используемый в Java механизм обработки исключений. Исключение в Java—это объект, который описывает исключительное состояние, возникшее в каком-либо участке программного кода. Когда возникает исключительное состояние, создается объект класса Exception. Этот объект пересылается в метод, обрабатывающий данный тип исключительной ситуации. Исключения могут возбуждаться и <вручную> для того, чтобы сообщить о некоторых нештатных ситуациях. |
| Основы |
| Типы исключений |
| Неперехваченные исключения |
| try и catch |
| Несколько разделов catch |
| Вложенные операторы try |
| throw |
| throws |
| finally |
| Подклассы Exception |
| Заключительное резюме |
| Легковесные процессы и синхронизация Параллельное программирование, связанное с использованием легковесных процессов, или подпроцессов (multithreading, light-weight processes) — концептуальная парадигма, в которой вы разделяете свою программу на два или несколько процессов, которые могут исполняться одновременно. |
| Замечание |
| Цикл обработки событий в случае единственного подпроцесса |
| Модель легковесных процессов в Java |
| Приоритеты подпроцессов |
| Синхронизация |
| Сообщения |
| Подпроцесс |
| Runnable |
| Приоритеты подпроцессов |
| Синхронизация |
| Взаимодействие подпроцессов |
| Клинч (deadlock) |
| Методы класса |
| Методы объекта start |
| А дорога дальше вьется |
| Утилиты Библиотека классов языка включает в себя набор вспомогательных классов, широко используемых в других встроенных пакетах Java. Эти классы расположены в пакетах java.lang и java.util. Они используются для работы с наборов объектов, взаимодействия с системными функциями низкого уровня, для работы с математическими функциями, генерации случайных чисел и манипуляций с датами и временем. |
| Простые оболочки для типов. |
| Number |
| Double и Float |
| Бесконечность и NaN |
| Integer и Long |
| Character |
| Boolean |
| Перечисления |
| Интерфейс Enumeration |
| Vector |
| Stack |
| Dictionary |
| HashTable |
| Properties |
| StrinsTokenizer |
| Runtime |
| Управление памятью |
| Выполнение других программ |
| System |
| Свойства окружения |
| Date |
| Сравнение |
| Строки и часовые пояса |
| Math |
| Ввод/Вывод Обобщенное понятие источника ввода относится к различным способам получения информации: к чтению дискового файла, символов с клавиатуры, либо получению данных из сети. Аналогично, под обобщенным понятием вывода также могут пониматься дисковые файлы, сетевое соединение и т.п. Эти абстракции дают удобную возможность для работы с вводом-выводом (I/O), не требуя при этом, чтобы каждая часть вашего кода понимала разницу между, скажем, клавиатурой и сетью. В Java эта абстракция называется потоком (stream) |
| File |
| Каталоги |
| Filename Filter |
| InputStream |
| OutputStream |
| Файловые потоки |
| Фильтруемые потоки |
| Буферизованные потоки |
| Сетевые средства Эта глава посвящена описанию пакета java.net. Java поддерживает протокол TCP/IP, во-первых, расширяя свой интерфейс потоков ввода-вывода, описанного в предыдущей главе, и во вторых, добавляя возможности, необходимые для построения объектов ввода-вывода при работе в сети. |
| InetAddress |
| Фабричные методы |
| Дейтаграммы |
| Сокеты "для клиентов" |
| Сокеты "для серверов" |
| URL |
| URLConnection |
| Сеть и только сеть |
| Апплеты Апплеты—это маленькие приложения, которые размещаются на серверах Internet, транспортируются клиенту по сети, автоматически устанавливаются и запускаются на месте, как часть документа HTML. Когда апплет прибывает к клиенту, его доступ к ресурсам ограничен. |
| Тег HTML |
| Передача параметров |
| Контекст апплета |
| Порядок инициализации апплета |
| Перерисовка |
| Простые методы класса Graphics |
| Цвет |
| Методы класса Color |
| Шрифты |
| Использование шрифтов |
| Позиционирование и шрифты: FontMetrics |
| Центрирование текста |
| Набор абстракций для работы с окнами Трудность при создании независимой от платформы библиотеки заключается в том, что ее разработчикам либо приходится требовать, чтобы все приложения на всех платформах вели себя и выглядели одинаково, либо для поддержки, скажем, трех различных разновидностей интерфейса приходится писать в три раза больше кода. Существуют два взгляда на эту проблему. Один подход заключается в том, что упор делается на графику низкого уровня— рисование пикселей, при этом разработчики библиотеки сами заботятся о внешнем виде каждого компонента. При другом подходе создаются абстракции, подходящие для библиотек каждой из операционных систем, и именно "родные" пакеты данной операционной системы служат подъемной силой для архитектурно-нейтральной библиотеки на каждой из платформ. В Java при создании библиотеки Abstraction Window Toolkit (AWT) выбран второй подход. |
| Компоненты |
| Container |
| Panel |
| Canvas |
| Label |
| Button |
| Checkbox |
| CheckboxGroup |
| Choice |
| Scrollbar |
| TextField |
| TextArea |
| Layout |
| LayoutManager |
| BorderLayout |
| GridLayout |
| Insets |
| CardLayout |
| Window |
| Frame |
| Меню |
| AWT при свете дня |
| Модели обработки событий Несмотря на существенные изменения механизма обработки событий в AWT, Java1.1 поддерживает обратную совместимость с моделью обработки событий, принятой в Java 1.0. Однако такая совместимость относится к типу "все или ничего"—эти две модели настолько отличаются друг от друга, что их невозможно использовать в одном приложении одновременно. |
| Модель обработки событий Java 1.0 |
| Элементы и связанные с ними события |
| Модель обработки событий Java 1.1 |
| Рисование "каракулей" с использованием встроенных классов |
| Работа с изображениями Java работает с наиболее популярными во Всемирной паутине форматами изображений—JPEG и GIF. JPEG лучше подходит для естественных цветных изображений, таких, как фотографии, а формат GIF является наилучшими для графических эмблем, изображений кнопок, и т.п. |
| Простой загрузчик изображений |
| ImageObserver |
| MediaTracker |
| ImageProducer |
| MemorylmageSource |
| ImageFilter и ImageFilterSource |
| CropImageFilter |
| RGBImageFilter |
| Мультимедиа-горизонты |
| Инструментальные средства JDK |
| appletviewer — программа просмотра апплетов Java |
| Java — интерпретатор Java |
| javac — компилятор Java |
| javadoc — генератор документации |
| javah — генератор С-файлов |
| javakey — программа управления ключами и цифровыми подписями |
| javap — дизассемблер классов Java |
| native2ascii — преобразование исходных текстов Java в ASCII |
| serialver — генератор номера версии класса |
