 
        
        - •Основні типи даних(char,short.Int і т.Д.), синтаксис використання й обмеження. Способи й методи перетворення одного типу в іншій.
- •Типы данных в java
- •Примитивные типы данных
- •Java преобразование строки в число (string to number)
- •Java преобразование числа в строку (number to string)
- •Преобразования чисел
- •Типова структура тіла класу. Особливості настроювання операційного середовища для запуску java-програм,псевдо-компіляція та запуск за допомогою утиліт командного рядка.
- •Керуючі конструкції, особливості синтаксису й використання. Локальні змінні й області їхньої видимості.
- •Досрочный выход из цикла (оператор break)
- •Внутрішні класи, анонімні класи- властивості й мета застосування , особливості синтаксису . Класи- адаптери.
- •5. Посилальні й прості типи даних,приклади й особливості використання
- •Клас String-основні методи класу й особливості застосування.
- •Клас Arrays-основні методи класу й особливості застосування.
- •8. Масиви
- •9.Абстрактные классы
- •10.Интерфейсы java.
- •11.Конструктори- призначення, синтаксис й особливості застосування при спадкуванні.
- •12. Коллекции Java (Java Collections Framework)
- •14. События
- •15. Сигнатура методу, перевантаження й перевизначення методів. Особливості використання фінализації різних елементів класу
- •Перегрузка (overload)
- •Класс final
- •Метод final
- •Переменная final
- •Основні класи організації графічного користувальницького інтерфейсу (кнопки, меню, текстові поля й т.Д.) Короткий опис методів використання.
- •19. Виключення, класифікація, основні конструкції , методи обробки виняткових ситуацій
- •21 Спадкування класів й інтерфейсів. Особливості й синтаксис.
- •24.Аплети – можливості та обмеження, особливості життєвого циклу та використання
- •25. Перерахування(перечисления). Синтаксис, структура, основні методи та приклади використання
- •Метод values()
- •Метод valueOf(String string)
- •26. Модифікатори доступу. Ікапсюляція.
- •27.Типи відносин між різними посилальними типами(спадкування , реалізація, агрегація). Синтаксис цих відносин.
- •28. Файлові потоки вводу-виводу. Основні класи , особливості використання.
- •29. Обобщения (Generic)
11.Конструктори- призначення, синтаксис й особливості застосування при спадкуванні.
Конструктор — это метод класса, который инициализирует новый объект после его создания.
- Имя конструктора всегда совпадает с именем класса, в котором он расположен. 
- У конструкторов нет типа возвращаемого результата - никакого, даже void. 
class Point { int х, у; Point(int х, int у) { this.x = x; this.y = y; } } class PointCreate { public static void main(String args[]) { Point p = new Point(10,20); System.out.println("x = " + p.x + " у = " + p.y); }}
Конструкторі при наследовании:
Создавать новый класс-наследник можно только либо имея такой же конструктор, что и у родительского класса, либо создать собственный конструктор (возможно с другим набором параметров).
public class RobotExt extends Robot
{
// Конструктор с параметрами
public RobotExt(double x, double y) {
// вызов конструктора родительского класса
super(x, y);
}
public void back(int distance) {
forward(-distance);
}
}
Внутри конструктора класса RobotExt мы видим специальное слово super с параметрами. Это слово означает, что мы вызываем конструктор родительского класса, который принимает два наших параметра.
12. Коллекции Java (Java Collections Framework)
Коллекции или контейнеры — это классы позволяющие хранить и производить операции над множеством объектов. Коллекции используются для сохранения, получения, манипулирования данными и обеспечивают
До выхода Java 2 v1.5 Tiger коллекции обладали значительным недостатком по сравнению с массивами. Дело в том что до версии 1.5 Java не поддерживал настраиваемые типы данных, что не позволяло создавать типизированные коллекции. С введением в Java 2 v1.5 настраиваемых (generics) типов Collections Framework был переписан и сейчас поддерживает строгую типизацию. Т.е. можно объявить коллекцию, которая сможет хранить объекты только определенного класса и потомков этого класса.
Интерфейсы
Интерфейсы в Collections Framework играют ключевую роль. Все классы коллекций реализуют различные интерфейсы, которые определяют поведение коллекции. Иными словами, интерфейс определяет «что делает коллекция», а конкретная реализация — «как коллекция делает то что определяет интерфейс».
Как не трудно догадаться, первая задача которая встает перед разработчиком при использовании Collections Framework — это выбор интерфейса. К выбору интерфейса следует подходить исходя из предметной области. Например, если в реальном мире Вы имеете дело с очередью на обслуживание, вполне вероятно, что Вам необходимо использовать интерфейсjava.util.Queue<E>.
Рассмотрим интерфейсы подробнее:
java.lang.Iterable<T>
Интерфейс java.lang.Iterable<T> указывает на то что коллекция, реализующая его, может формировать объект-итератор1, реализующий интерфейс java.util.Iterator<E>, а значит может быть использована в конструкции for (в виде for-each)2.
java.util.Collection<E>
Это базовый интерфейс Collections Framework. В интерфейсе java.util.Collection<E>определены основные методы для манипуляции с данными, такие как вставка (add, addAll), удаление (remove, removeAll, clear), поиск (contains). Однако, в конкретной реализации часть методов может быть не определена, а их использование, в этом случае, вызовет исключение java.lang.UnsupportedOperationException.
Интерфейсы, наследующие java.util.Collection
java.util.List<E>
Интерфейс java.util.List<E> служит для описания списков. Данный интерфейс определяет поведение коллекций, которые служат для хранения упорядоченного набора объектов. Порядок в котором хранятся элементы определяется порядком их добавления в список. Коллекции, реализующие интерфейс java.util.List<E> могут хранить 1,2 и более копий одного и того же объекта (ссылки на объект). Определена операция получения части списка. А в классеjava.util.Collections определен статический метод для сортировки списков.
Реализации: java.util.ArrayList<E>, java.util.LinkedList<E>.
java.util.Queue<E>
Реализует FIFO–буфер. Позволяет добавлять и получать объекты. При этом объекты могут быть получены в том порядке, в котором они были добавлены.
Реализации: java.util.ArrayDeque<E>, java.util.LinkedList<E>.
java.util.Deque<E>
Наследует java.util.Queue<E>. Двунаправленная очередь. Позволяет добавлять и удалять объекты с двух концов. Так же может быть использован в качестве стека.
Реализации: java.util.ArrayDeque<E>, java.util.LinkedList<E>.
java.util.Set<E>
Коллекции, наследующие интерфейс java.util.Set<E> обеспечивают уникальность хранимых объектов. Иными словами, один и тот же объект не может быть добавлен более одного раза. При использовании данного интерфейса крайне желательно переопределить метод equals хранимых объектов, т.к. он используется для определения уникальности объектов3.
Реализации: java.util.HashSet<E>, java.util.LinkedHashSet<E>,java.util.TreeSet<E>.
java.util.SortedSet<E>
Наследует java.util.Set<E>. Реализации этого интерфейса, помимо того что следят за уникальностью хранимых объектов, поддерживают их в порядке возрастания. Отношение порядка между объектами может быть определено, как с помощью метода compareTo интерфейса java.lang.Comparable<T>, так и при помощи специального класса-компаратора, наследующего интерфейс java.util.Comparator<T>.
Реализации: java.util.TreeSet<E>.
Отображения
java.util.Map<K,V>
Интерфейс java.util.Map<K,V> используется для отображения каждого элемента из одного множества объектов (ключей) на другое (значений). При этом, каждому элементу из множества ключей ставится в соответствие ровно 1 элемент из множества значений. В то же время одному элементу из множества значений может соответствовать 1, 2 и более элементов из множества ключей. Интерфейс java.util.Map<K,V> описывает функциональность ассоциативных массивов.
Реализации: java.util.HashMap<K,V>, java.util.LinkedHashMap<K,V>,java.util.TreeMap<K,V>, java.util.WeakHashMap<K,V>.
java.util.SortedMap<K,V>
Наследует java.util.Map<K,V>. Реализации этого интерфейса обеспечивают хранение элементов множества ключей в порядке возрастания (см. java.util.SortedSet).
Реализации: java.util.TreeMap<K,V>.
Реализации
Как видно, Collections Framework обеспечивает богатый выбор интерфейсов, практически на любой случай. Однако эти интерфейсы всего лишь описание того что класс коллекции должен делать. Интерфейсы не говорят о том как тот или иной класс коллекции реализует свой интерфейс. Более того, различные реализации могут накладывать дополнительные ограничения.
Общие вопросы хранения данных
Для начала разберемся каким образом классы Collections Framework хранят данные. Если вы посмотрите на список реализаций интерфейса java.util.List<E>, например, то увидите десять его реализаций4. Возникает резонный вопрос: неужели существует 10 способов хранения списков? Вовсе нет. Все способы хранения данных в Collections Framework можно свести трем основным: массивы, связанные списки, бинарные деревья. Рассмотрим их подробнее.
Контейнеры на основе массивов: java.util.ArrayList<E>, java.util.ArrayDeque<E>.
Связанные списки представляют собой цепочку из объектов ссылающихся друг на друга. Рассмотри звено6 такой цепочки из реализации java.util.LinkedList<E>:
private static class Entry<E> {
E element;
Entry<E> next;
Entry<E> previous;
...
}
Как видно, одно звено содержит ссылки на предыдущее и следующее звенья, а так же на объект, хранящийся в списке. Реализация java.util.LinkedList<E> представляет собой замкнутый двунаправленный список. Скорость доступа к произвольному элементу будет зависеть от его положения относительно головы списка (того звена на которое ссылается объектjava.util.LinkedList<E>) и в среднем будет пропорциональна размеру списка. Однако, скорость последовательного доступа ко всем элементам списка посредством итератора не будет зависеть от положения элементов в списке. Отсюда можно заключить, что контейнеры на основе связанных списков не стоит использовать там где необходимо часто обращаться к произвольному элементу.
Контейнеры на основе связанных списков: java.util.LinkedList<E>.
Бинарные деревья служат для хранения и поиска упорядоченных объектов. Это значит, что для хранимых объектов необходимо определить отношение порядка при помощи методаcompareTo и наследования от интерфейса java.lang.Comparable<T> или класса реализующего интерфейс java.util.Comparator<T>. Скорость доступа к произвольному объекту в таких деревьях пропорциональна логарифму размера контейнера.
Контейнеры на основе бинарных деревьев: java.util.TreeSet<E>, TreeMap<K,V>.
Хэш-таблицы — контейнеры на основе массивов, в которых для поиска элемента в массиве используется не индекс элемента в массиве, а его хэш-функция. Как известно, для любого объекта в Java реализована хэш-функция и рекомендуется переопределять ее всегда, а для объектов-сущностей в обязательном порядке. В хэш-таблицах индекс определяется на основе хэш-функции, а в нужной позиции массива хранится указатель на связанный список элементов у которых хэш-функции совпадают. Как не трудно догадаться, скорость доступа будет меньше тогда, когда связанные списки хэш-таблицы будут как можно короче, иными словами, когда хэш-функции различных объектов не будут совпадать.
Контейнеры на основе хэш-таблиц: java.util.HashSet<E>, java.util.HashMap<K,V>, java.util.WeakHashMap<K,V>.
13. JDBC
Драйверы, соединения и запросы
JDBC (Java DataBase Connectivity) – стандартный прикладной интерфейс
(API) языка Java для организации взаимодействия между приложением и СУБД.
Это взаимодействие осуществляется с помощью драйверов JDBC, обеспечиваю-
щих реализацию общих интерфейсов для конкретных СУБД и конкретных прото-
колов. В JDBC определяются четыре типа драйверов:
1. Драйвер, использующий другой прикладной интерфейс взаимодействия
с СУБД, в частности ODBC (так называемый JDBC-ODBC – мост). Стан-
дартный драйвер первого типа sun.jdbc.odbc.JdbcOdbcDriver
входит в JDK.
2. Драйвер, работающий через внешние (native) библиотеки (т.е. клиента
СУБД).
3. Драйвер, работающий по сетевому и независимому от СУБД протоколу
с промежуточным Java-сервером, который, в свою очередь, подключа-
ется к нужной СУБД.
4. Сетевой драйвер, работающий напрямую с нужной СУБД и не требу-
ющий установки native-библиотек.
JDBC предоставляет интерфейс для разработчиков, использующих различные
СУБД. С помощью JDBC отсылаются SQL-запросы только к реляционным базам
данных (БД), для которых существуют драйверы, знающие способ общения с ре-
альным сервером базы данных.
Последовательность действий
1. Загрузка класса драйвера базы данных при отсутствии экземпляра этого
класса.
Например:
String driverName = "org.gjt.mm.mysql.Driver";
new com.ibm.db2.jdbc.net.DB2Driver();
2. Установка соединения с БД.
Для установки соединения с БД вызывается статический метод
getConnection() класса DriverManager. В качестве параметров методу
передаются URL базы данных, логин пользователя БД и пароль доступа. Метод
возвращает объект Connection. URL базы данных, состоящий из типа и адреса
физического расположения БД.
Connection cn = DriverManager.getConnection(
"jdbc:mysql://localhost/my_db", "root", "pass");
3. Создание объекта для передачи запросов.
Statement st = cn.createStatement();
Объект класса Statement используется для выполнения SQL-запроса без его
предварительной подготовки. Могут применяться также объекты классов
PreparedStatement и CallableStatement для выполнения подготовленных
запросов и хранимых процедур.
4. Выполнение запроса.
Результаты выполнения запроса помещаются в объект ResultSet:
ResultSet rs = st.executeQuery(
"SELECT * FROM my_table");//выборка всех данных таблицы my_table
Для добавления, удаления или изменения информации в таблице вместо ме-
тода executeQuery() запрос помещается в метод executeUpdate().
5. Обработка результатов выполнения запроса производится методами ин-
терфейса ResultSet, где самыми распространенными являются next() и
getString(int pos) а также аналогичные методы, начинающиеся с
getТип(int pos) (getInt(int pos), getFloat(int pos) и др.) и
updateТип().
6. Закрытие соединения
cn.close();
После того как база больше не нужна, соединение закрывается.
Для того чтобы правильно пользоваться приведенными методами, програм-
мисту требуется знать типы полей БД. В распределенных системах это знание
предполагается изначально.
