- •К экзамену
- •1 Семестр
- •1.Общая характеристика Java
- •2. Жизненный цикл программы Java
- •3. Лексические основы Java
- •4. Операции в Java
- •5. Примитивные типы данных
- •6. Булевские переменные и булевская алгебра
- •7. Условный оператор
- •9. Оператор Break
- •10. Оператор Switch
- •11. Цикл While
- •12. Цикл Do
- •13. Цикл For
- •14. Одномерные массивы
- •15. Многомерные массивы
- •16. Введение в строки
- •Преимущества:
- •Недостатки:
- •Преимущества:
- •Недостатки:
- •17. Основные конструкторы класса String
- •Работа со строками (класс String)
- •21. Класс StringBuffer
- •22. Методы StringBuffer
- •23. Класс StringTokenizer и его методы
- •24. Общие понятия об ооп
- •28. Определение классов и методов
- •29. Модификаторы доступа
- •30. Описание методов
- •38. Статические переменные
- •39. Перегрузка метода
- •40. Рекурсивные методы
- •41. Конструкторы
- •42. Инициализаторы
- •43. Реализация наследования в Java
- •44. Производные методы
- •Замечание
- •Типы исключений
- •2. Блоки try-catch-throw
- •Несколько разделов catch
- •Вложенные операторы try
- •Throw ОбъектТипаThrowable;
- •3. Иерархия классов исключительных ситуаций
- •4. Базовые классы исключений и их методы
- •5. Проверяемые и непроверяемые исключения
- •6. Создание собственных классов исключений
- •7. Типы коллекций в Java
- •8. Класс ArrayList, конструкторы, основные методы
- •9. Класс LinkedList и его методы
- •10. Общая характеристика потоков Java
- •Создание потоков
- •Запуск и остановка
- •Приостановка и возобновление
- •11. Иерархия типов в java.Io
- •12. Класс InputStream и его методы
- •19. Класс File
- •Класс DataInputStream (производный от InputStream)
- •Класс DataOutputStream (производный от OutputStream)
- •Классы BufferedInputStream и BufferedOutputStream
- •Класс RandomAccessFile
- •Классы InputStreamReader и OutputStreamWriter (производные от Reader и Writer)
- •Классы FileReader и FileWriter
- •Зачем сериализация нужна?
- •Как сериализовать объект?
- •Формат сериализованного объекта
- •Алгоритм сериализации Java
- •21. Форматирование данных при выводе Методы printf и format
- •22. Класс Scanner, конструкторы, основные методы
- •23. Архитектура mvc (Model/View/Controller) Архитектура Model-View-Controller (mvc)
- •Еще Java фреймвоки
- •24. Gui общее понятия, принципы реализации в Java
- •25. Событийная модель Java
6. Создание собственных классов исключений
Прежде всего, нужно четко определить ситуации, в которых будет возникать ваше собственное исключение, и подумать, не станет ли его перехват невольно перехватывать также и другие, не учтенные вами исключения.
Потом надо выбрать суперкласс создаваемого класса-исключения. Им может быть класс Exception или один из его многочисленных подклассов.
После этого можно написать класс-исключение. Его имя, по соглашению, должно завершаться словом Exception. Как правило, этот класс состоит только из двух конструкторов и переопределения методов tostringo и getMessageO.
Рассмотрим простой пример. Пусть метод handle(int cipher) обрабатывает арабские цифры 0—9, которые передаются ему в аргументе cipher типа int.
Мы хотим выбросить исключение, если аргумент cipher выходит за диапазон 0—9.
Прежде всего, убедимся, что такого исключения нет в иерархии классов Exception. Ко всему прочему, не отслеживается и более общая ситуация попадания целого числа в какой-то диапазон. Поэтому будем расширять наш класс. Назовем его cipherException, прямо от класса Exception. Определим класс cipherException, как показано в листинге 16.6, и используем его в классе ExceptDemo. На рис. 16.5 продемонстрирован вывод этой программы.
7. Типы коллекций в Java
Список представляет собой упорядоченную коллекция. Есть доступ к элементам по индексу. Может содержать одинаковые элементы.
List - расширение Collection для управления упорядоченными коллекциями;
ArrayList - обычный динамический массив. Без синхронизации;
Vector - динамический массив с синхронизацией, а значит чуть медленей;
LinkedList - связной список. Без синхронизации. Более эффективен при частых вставках/удалений элементов в середине, чем ArrayList/Vector. Используется как стек, очередь, двунаправленная очередь;
Stack - расширение Vector для реализации стека;
8. Класс ArrayList, конструкторы, основные методы
Класс ArrayList <E>
java.lang. Объект
java.util. AbstractCollection<E>
java.util. AbstractList <E>
java.util. ArrayList <E>
Все Реализованные Интерфейсы:
Сериализуемый, Cloneable, Повторяемый <E>, Набор <E>, Список <E>, RandomAccess
Прямые Известные Подклассы:
AttributeList, RoleList, RoleUnresolvedList
public class ArrayList<E>
extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, Serializable
Реализация массива изменяемого размера интерфейса List. Реализации все дополнительные операции списка, и разрешения все элементы, включая null. В дополнение к реализации интерфейса List этот class обеспечивает методы, чтобы управлять размером массива, который используется внутренне, чтобы сохранить список. (Этот class примерно эквивалентен Vector, за исключением того, что это несинхронизируется.)
В постоянное время работают size, isEmpty, get, set, iterator, и операции listIterator. Выполнения работы add в амортизируемое постоянное время, то есть, добавляя n элементы требуют O (n) время. Все другие операции, выполненные в линейное время (примерно говорящий). Постоянный множитель низок по сравнению с этим для реализации LinkedList.
У каждого экземпляра ArrayList есть емкость. Емкость является размером массива, используемого, чтобы сохранить элементы в списке. Это является всегда, по крайней мере, столь же большим как размер списка. Поскольку элементы добавляются к ArrayList, его емкость растет автоматически. Детали политики роста не определяются вне факта, что у добавления элемента есть постоянная амортизируемая стоимость времени.
Приложение может увеличить емкость экземпляра ArrayList прежде, чем добавить большое количество элементов, используя работу ensureCapacity. Это может уменьшить количество инкрементного перераспределения.
Отметьте, что эта реализация не синхронизируется. Если многократные потоки получают доступ к экземпляру ArrayList одновременно, и по крайней мере один из потоков изменяет список структурно, этодолжно синхронизироваться внешне. (Структурная модификация является любой работой, которая добавляет или удаляет один или более элементов, или явно изменяет размеры отступающего массива; просто установка значения элемента не является структурной модификацией.) Это обычно выполняется, синхронизируясь на некотором объекте, который естественно инкапсулирует список. Если никакой такой объект не существует, список должен быть "обернут", используя Collections.synchronizedList метод. Это лучше всего делается во время создания, чтобы предотвратить случайный несинхронизируемый доступ к списку:
List list = Collections.synchronizedList(new ArrayList(...));
iterators возвратился этим class iterator и listIterator методы являются сбоем быстро: если список структурно изменяется когда-либо после того, как iterator создается, всегда кроме через собственный iterator's remove или add методы, iterator бросит a ConcurrentModificationException. Таким образом, перед лицом параллельной модификации, iterator перестал работать быстро и чисто, вместо того, чтобы рискнуть произвольным, недетерминированным поведением в неопределенное время в будущем.
Отметьте, что поведение сбоя быстро iterator не может быть гарантировано, как, вообще говоря, невозможно сделать любые трудные гарантии в присутствии несинхронизируемой параллельной модификации. Приведите бросок iterators к сбою быстро ConcurrentModificationException на основе максимальных усилий. Поэтому, было бы неправильно записать программу, которая зависела от этого исключения для его правильности: поведение сбоя быстро iterators должно использоваться только, чтобы обнаружить ошибки.
Этот class является элементом Платформы Наборов Java.