Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
готовые шпоры по java.docx
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
78 Кб
Скачать
☆

9.Параметризованные классы и методы.

К наиболее важным новшествам версии языка J2SE5можно отнести появление параметризованных (generic) классов и методов, позволяющих использовать более гибкую и в то же время достаточно строгую типизацию, что особенно важно при работе с коллекциями. Параметризация позволяет создавать классы, интерфейсы и методы, в которых

тип обрабатываемых данных задается как параметр. Параметризованный (generic) метод определяет базовый набор операций, которые будут применяться к разным типам данных, получаемых методом в качестве параметра, и может быть записан, например, в виде:

<T extends Тип> returnType methodName(T arg) {}

<T> returnType methodName(T arg) {}

Описание типа должно находиться перед возвращаемым типом. Запись первого вида означает, что в метод можно передавать объекты, типы которых являются подклассами класса, указанного после extends. Второй способ

объявления метода никаких ограничений на передаваемый тип не ставит. Generic-методы могут находиться как в параметризованных классах, так и в обычных. Параметр метода может не иметь никакого отношения к параметру

своего класса. Метасимволы применимы и к generic-методам.

10. Статические элементы класса. Принципы работы полиморфизма для полей и методов, статических и динамических.

Класс содержит члены двух видов: поля и методы. Для каждого из них задается атрибут, определяющий возможности наследования и доступа (private, protected, public или package). Кроме того, каждый из членов при желании можно объявить как static.Для статического члена создается всего один экземпляр, общий для всего класса, вместо построения его копий в каждом объекте класса. В случае статических переменных (переменных класса), это ровно одна переменная, независимо от того, сколько объектов было создано на основе класса (даже если ни одного). Инициализация статических полей класса происходит до того, как они используются или запускается любой из его методов. В инициализаторах статических полей не должны вызываться методы, которые, согласно их объявлениям, могут привести к возникновению проверяемых исключений. Дело в том, что инициализаторы выполняются при загрузке класса, и программа может быть еще не готова к обработке исключения.

11.Обработка строк в Java. Классы String, StringBuilder, StringBuffer. Форматирование и анализ. Регулярные выражения.

Строка в языке Java –это основной носитель текстовой информации. Это не массив символов типа char, а объект соответствующего класса. Системная библиотека Java

содержит классы String, StringBuilder и StringBuffer, поддерживающие работу со строками и определенные в пакете java.lang, подключаемом автоматически. Эти классы объявлены как final, что означает невозможность создания собственных порожденных классов со свойствами строки. Кроме того, для форматирования и обработки строк применяются классы Formatter, Pattern, Matcher и другие. Каждая строка, создаваемая с помощью оператора new или с помощью литерала (заключённая в двойные апострофы), является объектом класса String. Особенностью объекта класса String является то, что его значение не может быть изменено после создания объекта при помощи какого-либо метода класса, так как любое изменение строки приводит к созданию нового объекта. При этом

ссылку на объект класса String можно изменить так, чтобы она указывала на другой объект и тем самым на другое значение. Класс String содержит следующие методы для работы со строками: String concat(String s) или “+” – слияние строк;

boolean equals(Object ob) и equalsIgnoreCase(String s) –

сравнение строк с учетом и без учета регистра соответственно;

boolean contentEquals(StringBuffer ob) – сравнение строки

и содержимого объекта типа StringBuffer;

String substring(int n, int m) – извлечение из строки подстроки длины m-n, начиная с позиции n. Нумерация символов в строке начинается с нуля;

String substring(int n) – извлечение из строки подстроки, начиная с позиции n;

int length() – определение длины строки;

static String valueOf(значение) – преобразование переменной базового типа к строке;

String replace(char с1, char с2) –замена в строке всех вхожде-

ний первого символа вторым символом;

char charAt(int position) – возвращение символа из указанной позиции (нумерация с нуля);

boolean isEmpty() - возвращает true,если длина строки равна0;

Классы StringBuilder и StringBuffer являются “близнецами”

и по своему предназначению близки к классу String, но, в отличие от последнего, содержимое и размеры объектов классов StringBuilder и StringBuffer можно изменять. Основным и единственным отличием StringBuilder от StringBuffer

является потокобезопасность последнего. В версии 1.5.0 был добавлен непотокобезопасный (следовательно, более быстрый в обработке) класс StringBuilder, который следует применять, если не существует вероятности использования объекта в конкурирующих потоках. С помощью соответствующих методов и конструкторов объекты классов StringBuffer, StringBuilder и String можно преобразовывать друг в друга. Конструктор класса StringBuffer (также как и StringBuilder) может принимать в качестве параметра объект String или неотрицательный размер буфера. Объекты этого класса можно преобразовать в объект класса String методом toString() или с помощью конструктора класса String.

Для создания форматированного текстового вывода предназначен класс java.util.Formatter. Этот класс обеспечивает преобразование формата, позволяющее выводить числа, строки, время и даты в любом необходимом разработчику виде.

Класс StringTokenizer содержит методы, позволяющие разбивать текст на лексемы, отделяемые разделителями. Набор разделителей по умолчанию: пробел, символ табуляции, символ новой строки, перевод каретки. В задаваемой строке разделителей можно указывать другие разделители, например «= , ; : ».

Класс java.util.regex.Pattern применяется для определения регу-

лярных выражений, для которых ищется соответствие в строке, файле или другом объекте, представляющем последовательность символов. Для определения шаблона применяются специальные синтаксические конструкции. (шаблоны)