
- •Особенности языка Java
- •История Java
- •Характерные особенности Java
- •Разработка и выполнение Java приложения:
- •Понятие среды выполнения Java
- •Переносимость языка Java
- •Высокая производительность языка Java
- •Типы Java-приложений
- •Автономное (самостоятельное) приложение – application
- •Апплет – applet
- •Комбинированное приложение
- •Сервлет – servlet
- •Мидлет – midlet
- •Различия между автономными приложениями и апплетами
- •Автономное приложение
- •Апплет
- •Этапы жизненного цикла апплета
- •Этапы жизненного цикла в соответствии со стандартом Sun:
- •Этап инициализации
- •Этап запуска
- •Этап останова
- •Этап уничтожения
- •Этап рисования (перерисовки) окна апплета
- •Отличия Java от C++
- •Конструкторы классов
- •«Сборщик мусора»
- •Типы данных в Java
- •Простые типы
- •Ссылочные (объектные) типы
- •Строки в Java
- •Массивы в Java
- •Классы в Java
- •Особенности реализации
- •Пакеты
- •Управление доступом к элементам класса
- •Поля класса
- •Методы
- •Перегрузка и переопределение методов
- •Ключевые слова THIS и SUPER
- •Интерфейсы в Java
- •Понятие Java API
- •Пакеты ядра Java API (в JDK 1.0):
- •Развитие ядра Java API (в новой версии JDK и в Java 2)
- •Основные понятия AWT
- •Компоненты
- •Контейнеры
- •Компоновки. Менеджеры компоновки
- •События
- •События. Обработка событий
- •Иерархия классов-событий
- •Семантические события и их источники-компоненты AWT
- •Модель делегирования событий
- •Методы, объявленные в интерфейсах для семантических событий
- •Способы реализации блока прослушивания событий от AWT-компонента
- •Понятие класса-адаптера
- •Комбинированное приложение Java. Обработка события WindowEvent
- •Исключения в Java и их обработка
- •Иерархия классов исключений
- •Различия между исключениями Exception и ошибками Error
- •Организация обработки исключений в программе
- •Используемые операторы:
- •Как правильно организовывать обработку исключений
- •Понятия процесса и потока
- •Конструкторы класса Thread
- •Наиболее важные методы класса Thread
- •Способы создания потоков
- •Синхронизация потоков
- •Когда следует использовать синхронизацию потоков?
- •Механизм блокировки объекта
- •Способы использования ключевого слова synchronized
- •Синхронизированные методы
- •Оператор synchronized
- •Преимущества оператора synchronized:
- •Взаимодействие потоков: использование методов wait(), notify(), notifyAll()
- •Стандартные образцы кода использования методов
- •Поток-диспетчер событий AWT
- •Потоки и исключения
- •О группах потоков
- •Технология компонентного программирования JavaBeans
- •Понятие технологии компонентного программирования
- •Этап компиляции
- •Этап разработки
- •Этап создания приложения
- •Этап выполнения
- •Понятие компонентной модели
- •Основные требования к классам Bean-компонентов
- •Соглашения об именах
- •Соглашения об именах для свойств
- •Соглашения об именах для событий
- •Соглашения об именах для методов
- •Использование событий для управления свойствами
- •Связанные свойства
- •Преобразование обычного свойства в связанное
- •Ограниченные свойства
- •Преобразование обычного свойства в ограниченное
- •Ввод-вывод в Java: основные понятия
- •Основные группы классов и интерфейсов пакета java.io
- •Фильтрованные потоки
- •Буферизированные потоки
- •Принципы работы Buffered-потоков
- •Входные потоки
- •Выходные потоки
- •Канальные потоки
- •Синхронизация потоков данных
- •Понятие отражения (рефлексии)
- •Класс java.lang.Class
- •Классы пакета java.lang.reflect
- •Понятие интроспекции
- •Понятие сериализации
- •Обеспечение сериализуемости Bean
- •Выполнение базовой сериализации
- •Пример с сериализацией (см. SerializationDemo.java)
- •Настройка сериализации
- •Методы readObject и writeObject
- •Интерфейс Externalizable
- •Создание экземпляров сериализованных Bean
- •Приложение
- •// Файл HelloApplet.java
- •// Файл MyApplet.java
- •// Файл StringDemo.java
- •// Файл ConstrDemo.java
- •// Фрагменты файла AnimBallsPlus.java

Скачано с сайта http://ivc.clan.su
Типы данных в Java
Java — строго типизированный язык. Это означает, что тип каждой переменной должен быть объявлен.
Во время компиляции должен быть известен тип каждой переменной и каждого выражения. Компилятор проверяет соответствие типов и предотвращает некорректные операции присваивания.
Используются следующие типы данных: простые типы;
ссылочные (или объектные) типы.
Простые типы
Простые типы данных в Java имеют фиксированную разрядность, не зависящую от платформы. Разрядность фиксирована на уровне языка.
В Java определены 8 простых типов данных:
Тип |
Содержание |
Разрядность (бит) |
Значение по умолчанию |
boolean |
Логическое значение true или false |
- |
false |
byte |
Целое со знаком |
8 |
0 |
char |
Unicode-символ |
16 |
‘\u0000’ |
short |
Целое со знаком |
16 |
0 |
int |
Целое со знаком |
32 |
0 |
long |
Целое со знаком |
64 |
0L |
float |
Число с плавающей точкой |
32 |
0.0F |
double |
Число с плавающей точкой |
64 |
0.0D |
Замечания:
1.В Java, в отличие от C++, нет беззнаковых целых типов.
2.Тип char используется для хранения символов в кодировке Unicode, которая позволяет работать с алфавитами различных языков. Первые 256 символов соответствуют стандарту ASCII.
3.Все простые типы данных по умолчанию инициализируются (см. табл.).
4.В Java существуют специальные классы (классы-оболочки) для простых типов. Они содержатся в пакете java.lang и имеют очевидные имена: Integer, Float, Double, Short, Byte, Character, Boolean. В этих классах определены полезные
методы преобразования типов, например, методы преобразования строк, состоящих из цифр, в числа. В классе Integer, в частности, есть метод
static int parseInt(String s)
преобразующий строку в целое число.
Кроме того, в классах-оболочках имеются поля-константы MAX_VALUE, MIN_VALUE, которые хранят граничные значения диапазона соответствующего типа данных.
5.Приведение типов в Java осуществляется автоматически и с помощью операции явного приведения типов.
Неявное приведение простых типов (преобразование типов)
Можно преобразовать любой тип из последовательности к любому другому, расположенному справа:
byte , short, int, long, float, double;
char, int, long, float, double;
Явное приведение простых типов осуществляется с помощью оператора
(тип) имя_переменной
Внимание! Нельзя выполнять приведение целого типа эквивалентом значения false, а ненулевая величина необходимости можно выполнять следующим образом:
...
boolean boolx; int intx;
...
boolx = intx != 0; intx = boolx ? 1 : 0;
ктипу boolean и наоборот. В Java значение 0 не является
-значения true, в отличие от C++. Преобразования при
Ссылочные (объектные) типы
Объектами в Java являются: экземпляр класса;
массив.
7

Скачано с сайта http://ivc.clan.su
Величины ссылочного типа - это ссылки на объекты. Переменная, имеющая ссылочный тип, содержит ссылку на объект.
Ссылка является своего рода указателем, но с ней нельзя выполнять операции, допустимые в языках С и C++.
Ссылочные типы:
типы классов;
типы интерфейсов;
типы массивов.
Имя любого класса (интерфейса) в Java может рассматриваться как имя типа данных.
Замечания
•Объявление переменной ссылочного типа не создаёт соответствующий объект. Для создания объекта следует использовать оператор new.
•Для всех ссылочных типов значение по умолчанию равно null. Слово null в Java используется для
обозначения так называемой нулевой ссылки.
Пример
...
Color c1, с2; // переменные ссылочного типа Color при объявлении // инициализированы значениями null
... |
|
|
|
|
c1 |
= new Color(100, 100, 100); // создание |
1-го объекта типа |
Color |
|
с2 |
= new Color(200, 200, 200); // создание |
2-го объекта типа |
Color |
|
c1 |
= с2; |
// теперь переменные с1 и с2 хранят ссылку на 2-й объект |
||
... |
// Color 1-й объект Color будет удален сборщиком мусора |
Строки в Java
•Язык Java не имеет простого строкового типа. Для работы со строками используется ссылочный тип String. Класс String содержится в пакете java.lang. Любая строка в Java является объектом и к ней применимы все действия, выполняемые над объектами.
•Строку можно создать с помощью оператора new. Возможен также неявный способ создания
объектов типа String:
String strl = "Новая строка";
String str2 = new String ("Новая строка");
• Строки можно объединять, используя оператор конкатенации строк (единственный в Java перегруженный оператор «+»):
str2 = strl + "еще одна строка";
•Класс String предназначен для работы со строковыми константами (литералами). Методы класса, модифицирующие объект String, реально не изменяют его, а создают дополнительный объект String. В пакете java.lang имеется класс StringBuffer, позволяющий создавать строковые объекты, которые можно изменять.
•В Java в каждом классе определен метод toString(), который предназначен для преобразования объектов этого класса в строку (метод наследуется от класса Object).
Массивы в Java
Массивы в Java, как и экземпляры классов, являются объектами.
Массивы представляют собой наборы однотипных элементов и могут содержать данные простых типов и данные ссылочных типов, т.е. ссылки на объекты (экземпляры классов или другие массивы).
Для задания массива необходимо выполнить следующие действия:
1.Объявление массива
При этом задается тип элементов массива, массиву присваивается имя, создается ссылка на массив. Например:
int myIntArr[]; // объявление массива данных целого типа
int[] myIntArr; // более предпочтительный вариант размещения скобок
8

Скачано с сайта http://ivc.clan.su
//int - тип элемента массива, int[ ] - тип массива;
//myIntArr - имя массива, т.е. идентификатор переменной,
//ссылающейся на массив. Переменная инициализируется
//значением null.
String[] myStrArr; // объявление массива объектов-строк
2.Создание объекта-массива
При создании массива задается количество элементов (размер массива), который в дальнейшем
не может быть изменен. Массив можно создать:
• с помощью оператора new: myIntArr = new int[10];
Можно объединить оператор объявления массива с оператором new:
String[] myStrArr = new String[15];
При создании массива переменной типа массива присваивается ссылка на объект-массив. Выделяется память для набора элементов простого или набора элементов ссылочного типа.
•с помощью неявного использования оператора new при инициализации.
3.Инициализация массива
По умолчанию при создании массива элементы массивов простых типов инициализируются
нулевыми значениями, а элементы массивов ссылочных типов (т.е. массивов объектов) — нулевыми ссылками (null).
Вообще массив объектов и массив простых типов различаются только тем, что массив объектов хранит ссылки на объекты, а массив простых типов — реальные значения данных!
Массив можно инициализировать
•списком в фигурных скобках (в том числе при объявлении);
•присваиванием значений элементам массива с указанными индексами.
(См. пример ArrayDemo.java.)
При инициализации каждому элементу массива простого типа присваивается значение простого типа, а элементу массива объектов, т.е. переменной ссылочного типа, - ссылка на объект, формируемая при создании объекта соответствующего типа с помощью оператора new!
Пример:
Integer[] a = new Integer[]{new Integer(10), new Integer(100), ...}; Integer[] b = new Integer[5]; b[0] = new Integer(10);
b[1] = new Integer(100);
Замечания:
1)Индексы массива должны иметь либо целый тип int, либо более короткий целый тип, который можно преобразовать к int.
2)Java поддерживает многомерные массивы (массивы массивов), в том числе иррегулярные.
Например:
int[][] arr1 = new int [5] [10]; int[][] arr2 = new int [5] [];
Первый размер указывается обязательно, другие размеры можно задавать позднее, создавая с помощью оператора new объекты-массивы, размещаемые в многомерном массиве.
3)Индексы массивов проверяются при выполнении Java-приложений. В C++ среда выполнения ничего не знает о массиве, который задается указателем, и не предупреждает о возможных ошибках.
В Java массив — это объект, в котором фиксируется информация о размере массива. JVM проверяет
выход за границы массива, и в случае необходимости генерирует исключение:
ArrayIndexOutOfBoundsException
4) Определение размера массива
Массивы в Java являются объектами и неявно происходят от суперкласса всех классов java.lang.Object. Для определения размера не требуется оператор, подобный sizeof из C/C++. Это делается с помощью доступного только для чтения поля length объекта-массива (см. пример
ArrayDemo.java).
9