RegExp Обертки Object

Содержание

Слайд 2

Рассматриваемые вопросы

RegExp
Классы оболочки
Object

Рассматриваемые вопросы RegExp Классы оболочки Object

Слайд 3

Что такое регулярное выражение

Регулярное выражение (RegExp) - это своего рода шаблон, который

Что такое регулярное выражение Регулярное выражение (RegExp) - это своего рода шаблон,
может быть применен к тексту. Java предоставляет пакет java.util.regex для сопоставления с регулярными выражениями.
Регулярное выражение или соответствует тексту (его части) или нет. Если регулярное выражение совпадает с частью текста, то мы можем найти его. Если регулярное выражение составное, то мы можем легко выяснить, какая часть регулярного выражения совпадает с какой частью текста.

Слайд 4

RegExp. Пример

Например, есть следующая строка:
Из строки нужно вырезать все имена файлов: file1.doc,

RegExp. Пример Например, есть следующая строка: Из строки нужно вырезать все имена
file2.txt, file3.img, file4.doc. Для нахождения используется регулярное выражение:
Регулярное выражение [a-z]+ соответствует всем строчным буквам в тексте. [a-z] означает любой символ от a до z включительно, и + означает «один или более» символов.

Используются файлы file1.doc, file2.txt.
А еще было бы неплохо обратить внимание на файл file3.img.
Также просмотрите содержимое file4.doc.

[a-zA-Z]+\\.[a-z]{3}

Слайд 5

RegExp. Пример

Например, есть следующая строка:
Из строки нужно вырезать все имена файлов: file1.doc,

RegExp. Пример Например, есть следующая строка: Из строки нужно вырезать все имена
file2.txt, file3.img, file4.doc. Для нахождения используется регулярное выражение:
Регулярное выражение [a-z]+ соответствует всем строчным буквам в тексте. [a-z] означает любой символ от a до z включительно, и + означает «один или более» символов.

Используются файлы file1.doc, file2.txt.
А еще было бы неплохо обратить внимание на файл file3.img.
Также просмотрите содержимое file4.doc.

[a-zA-Z]+\\.[a-z]{3}

Слайд 6

Pattern

Pattern класс - объект класса составляет представление регулярного выражения. Класс Pattern не

Pattern Pattern класс - объект класса составляет представление регулярного выражения. Класс Pattern
предусматривает никаких публичных конструкторов. Чтобы создать шаблон, необходимо сначала вызвать один из публичных статических методов, которые затем возвращают объект класса Pattern. Эти методы принимают регулярное выражение в качестве аргумента.
Pattern pattern = Pattern.compile("[a-z]+");

Слайд 7

Matcher

Matcher класс - объект «Искатель» является двигателем, который интерпретирует шаблон и выполняет

Matcher Matcher класс - объект «Искатель» является двигателем, который интерпретирует шаблон и
операции сопоставления с входной строкой. Как и Pattern класс, Matcher не имеет публичных конструкторов. Вы получаете объект Matcher вызовом метода matcher(), на объекте класса Pattern.
Методы класса Matcher:
matches() возвращает true, если шаблон соответствует всей строке, иначе false.
lookingAt() возвращает true, если шаблон соответствует началу строки, и false в противном случае.
find() возвращает true, если шаблон совпадает с любой частью текста.

Слайд 8

Основные метасимволы

^ (крышка) начало проверяемой строки
$ (доллар) конец проверяемой строки
. (точка)

Основные метасимволы ^ (крышка) начало проверяемой строки $ (доллар) конец проверяемой строки
представляет собой сокращенную форму записи для символьного класса, совпадающего с любым символом
| означает «или». Подвыражения, объединенные этим способом, называются альтернативами (alternatives)
? (знак вопроса) означает, что предшествующий ему символ является необязательным
+ обозначает «один или несколько экземпляров непосредственно предшествующего элемента
* любое количество экземпляров элемента (в том числе и нулевое)

Слайд 9

Основные метасимволы

\\d цифровой символ
\\D не цифровой символ
\\s пробельный символ
\\S не пробельный символ
\\w

Основные метасимволы \\d цифровой символ \\D не цифровой символ \\s пробельный символ
буквенный(латиница) или цифровой символ или знак подчёркивания
\\W любой символ, кроме буквенного или цифрового символа или знака подчёркивания
[abc] Диапазон символов или цифр

Слайд 10

Примеры регулярных выражений

a? - a один раз или ни разу
a* - a

Примеры регулярных выражений a? - a один раз или ни разу a*
ноль или более раз
a+ - a один или более раз
a{n} - a n раз
a{n,}- a n или более раз
a{n,m}- a от n до m

Слайд 11

Жадный режим квантификатора

Особенностью квантификаторов является возможность использования их в разных режимах: жадном,

Жадный режим квантификатора Особенностью квантификаторов является возможность использования их в разных режимах:
сверхжадном и ленивом.
По умолчанию квантификатор работает в жадном режиме. Это означает, что он ищет максимально длинное совпадение в строке.
"А.+а" // жадный режим

Слайд 12

Сверхжадный режим квантификатора

В сверхжадном режиме работа матчера аналогична механизму жадного режима. После

Сверхжадный режим квантификатора В сверхжадном режиме работа матчера аналогична механизму жадного режима.
захвата всей строки матчер добавляет остаток шаблона и сравнивает с захваченной строкой. В нашем примере при выполнении метода main с шаблоном "А.++а" совпадений не будет найдено.
"А.++а" // сверхжадный режим

Слайд 13

Ленивый режим квантификатора

В результате работы метода main при использовании шаблона "А.+?а" мы

Ленивый режим квантификатора В результате работы метода main при использовании шаблона "А.+?а"
получим следующий результат:
Алла
Алекса
"А.+?а" // ленивый режим

Слайд 14

Сравнение регулярного выражения с текстом

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexDemo2 {
public static

Сравнение регулярного выражения с текстом import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexDemo2
void main(String[] args) {
Pattern pattern = Pattern.compile("a*b");
Matcher matcher = pattern.matcher("aaab");
boolean b = matcher.matches();
System.out.println(b);
}
}

Слайд 15

Простой валидатор ссылки

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexDemo3 {
public static void main(String[]

Простой валидатор ссылки import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexDemo3 { public
args) {
System.out.println(test("google.com"));
System.out.println(test("reference1.ua"));
System.out.println(test("reference1.org"));
}
public static boolean test(String testString) {
Pattern pattern = Pattern.compile(".+\\.(com|ua|ru)");
Matcher matcher = pattern.matcher(testString);
return matcher.matches();
}
}

Слайд 16

Метод Pattern.split()

Класс Pattern содержит метод split(), который разбивает строку на подстроки, используя

Метод Pattern.split() Класс Pattern содержит метод split(), который разбивает строку на подстроки,
указанный в шаблоне разделитель:
import java.util.Arrays;
import java.util.regex.Pattern;
public class RegexDemo5 {
public static void main(String[] args) {
Pattern pattern = Pattern.compile("\\d+\\s?");
String[] words = pattern.split("java5tiger 77 java6mustang");
System.out.print(Arrays.toString(words));
}
}

Слайд 17

Метод String.split()

import java.util.Arrays;
public class RegexDemo6 {
public static void main(String[] args) {

Метод String.split() import java.util.Arrays; public class RegexDemo6 { public static void main(String[]
String str = "java5tiger 77 java6mustang";
String[] words = str.split("\\d+\\s?");
System.out.print(Arrays.toString(words));
}
}

Слайд 18

Простой валидатор ссылки

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexDemo3 {
public static void main(String[]

Простой валидатор ссылки import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexDemo3 { public
args) {
System.out.println(test("google.com"));
System.out.println(test("reference1.ua"));
System.out.println(test("reference1.org"));
}
public static boolean test(String testString) {
Pattern pattern = Pattern.compile(".+\\.(com|ua|ru)");
Matcher matcher = pattern.matcher(testString);
return matcher.matches();
}
}

Слайд 19

Класс Object

В Java определен один специальный класс, называемый Object. Все остальные классы

Класс Object В Java определен один специальный класс, называемый Object. Все остальные
являются подклассами, производными от этого класса, даже если в объявлении это явно не указано. В классе Object определен ряд методов, которые доступны всем классам языка Java.

Слайд 20

Методы класс Object

protected Object clone() - создает новый объект, не отличающийся от

Методы класс Object protected Object clone() - создает новый объект, не отличающийся
клонируемого.
public boolean equals(Object obj) - определяет, равен ли один объект другому.
protected void finalize() - вызывается перед удалением неиспользуемого объекта.
public final Class getClass() - получает класс объекта во время выполнения.
public int hashCode() - возвращает хеш-код, связанный с вызывающим объектом.
public final void notify() - возобновляет исполнение потока, ожидающего вызывающего объекта.

Слайд 21

Методы класс Object

public final void notify() - возобновляет исполнение потока, ожидающего вызывающего

Методы класс Object public final void notify() - возобновляет исполнение потока, ожидающего
объекта.
public final void notifyAll() - возобновляет исполнение всех потоков, ожидающих вызывающего объекта.
public String toString() - возвращает символьную строку, описывающую объект.
public final void wait() - ожидает другого потока исполнения.
public final void wait(long timeout) - ожидает другого потока исполнения.
public final void wait(long timeout, int nanos) - ожидает другого потока исполнения.

Слайд 22

Методы класс Object

public final void notify() - возобновляет исполнение потока, ожидающего вызывающего

Методы класс Object public final void notify() - возобновляет исполнение потока, ожидающего
объекта.
public final void notifyAll() - возобновляет исполнение всех потоков, ожидающих вызывающего объекта.
public String toString() - возвращает символьную строку, описывающую объект.
public final void wait() - ожидает другого потока исполнения.
public final void wait(long timeout) - ожидает другого потока исполнения.
public final void wait(long timeout, int nanos) - ожидает другого потока исполнения.

Слайд 23

Метод equals()

В Java сравнение объектов производится с помощью метода equals() класса Object.

Метод equals() В Java сравнение объектов производится с помощью метода equals() класса
Этот метод сравнивает содержимое объектов и выводит значение типа boolean. Значение true - если содержимое эквивалентно, и false — если нет.
Операция == не рекомендуется для сравнения объектов в Java. Дело в том, что при сравнение объектов, операция == вернет true лишь в одном случае — когда ссылки указывают на один и тот же объект. В данном случае не учитывается содержимое переменных класса.
При создании пользовательского класса, принято переопределять метод equals() таким образом, что бы учитывались переменные объекта.

Слайд 24

Метод toString()

Часто необходимо вывести на экран содержимое объекта. Для этого в классе

Метод toString() Часто необходимо вывести на экран содержимое объекта. Для этого в
Object определен метод toString(), возвращающий символьную строку описывающую объект. При создании нового класса принято переопределение toString() таким образом, чтобы возвращающая строка содержала в себе имя класса, имена и значения всех переменных.
Для вызова метода toString() необходимо просто передать нужный объект в System.out.println:
System.out.println(person);
Чисто теоретически можно явно вызывать метод toString() - System.out.println(person.toString()), но так не принято.
Если у класса Person не переопределен метод toString(), то при запуске класса PersonDemo4 вызовется метод toString(), определенный в классе Object. И на консоль выведется нечто такое:
oop.Person@5e2a3193

Слайд 25

Метод hashCode()

Что такое хеш-код?
Если очень просто, то хеш-код — это число. Если

Метод hashCode() Что такое хеш-код? Если очень просто, то хеш-код — это
более точно, то это битовая строка фиксированной длины, полученная из массива произвольной длины.
Представление объекта в виде числа.
В java hash code представлен в виде числа примитивного типа int, который равен 4-м байтам, и может помещать числа от -2 147 483 648 до 2 147 483 647. На данном этапе важно понимать, что хеш-код это число, у которого есть свой предел, который для java ограничен примитивным целочисленным типом int.

Слайд 26

Метод toString()

Часто необходимо вывести на экран содержимое объекта. Для этого в классе

Метод toString() Часто необходимо вывести на экран содержимое объекта. Для этого в
Object определен метод toString(), возвращающий символьную строку описывающую объект. При создании нового класса принято переопределение toString() таким образом, чтобы возвращающая строка содержала в себе имя класса, имена и значения всех переменных.
Для вызова метода toString() необходимо просто передать нужный объект в System.out.println:
System.out.println(person);
Чисто теоретически можно явно вызывать метод toString() - System.out.println(person.toString()), но так не принято.
Если у класса Person не переопределен метод toString(), то при запуске класса PersonDemo4 вызовется метод toString(), определенный в классе Object. И на консоль выведется нечто такое:
oop.Person@5e2a3193

Слайд 27

Модификатор native

Приложение на языке Java может вызывать методы, написанные на языке С++.
Такие

Модификатор native Приложение на языке Java может вызывать методы, написанные на языке
методы объявляются в языке Java с ключевым словом native, которое сообщает компилятору, что метод реализован в другом месте.

public native int hashCode();

Слайд 28

Классы оболочки

Каждому простому типу в Java соответствует класс-оболочка.

Классы оболочки Каждому простому типу в Java соответствует класс-оболочка.

Слайд 29

Классы оболочки

Классы-оболочки выполняют две основные функции.
Первая состоит в поддержке контейнера методов

Классы оболочки Классы-оболочки выполняют две основные функции. Первая состоит в поддержке контейнера
и переменных, относящихся к определенному типу (скажем, методов преобразования строк и констант, задающих границы интервала допустимых значений).
Вторая функция классов-оболочек заключается в обеспечении возможности создания объектов для хранения значений простых типов и использования их в контексте классов, которые "умеют" обращаться только со ссылками на объекты типа Object.
Integer intObject = new Integer(3);

Слайд 30

Конструкторы оболочек

В таблицы для каждого класса указан примитивный тип и варианты конструкторов.

Конструкторы оболочек В таблицы для каждого класса указан примитивный тип и варианты
Один на вход принимает значение соответствующего примитивного значения, а второй - значение типа String. Исключения: класс Character, у которого только один конструктор с аргументом char и класс Float, объявляющий три конструктора - для значения float, String и еще double.

Слайд 31

Методы классов оболочек

valueOf() - второй способ создания объектов оболочек
parseXxx() - метод позволяющие

Методы классов оболочек valueOf() - второй способ создания объектов оболочек parseXxx() -
преобразовывать строку в соответствующее примитивное значение
 toString() – строковой предствление объекта
toHexString(), toOctalString(), toBinaryString() - Integer и Long позволяют преобразовывать числа из десятичной системы исчисления к шестнадцатеричной, восьмеричной и двоичной

Слайд 32

Статические константы классов оболочек

Каждый класс оболочка содержит статические константы, содержащие максимальное и

Статические константы классов оболочек Каждый класс оболочка содержит статические константы, содержащие максимальное
минимальное значения для данного типа.
Например, в классе Integer есть константы Integer.MIN_VALUE – минимальное int значение и Integer.MAX_VALUE – максимальное int значение.
Классы-обертки числовых типов Float и Double, помимо описанного для целочисленных примитивных типов, дополнительно содержат определения следующих констант:
NEGATIVE_INFINITY – отрицательная бесконечность;
POSITIVE_INFINITY – положительная бесконечность;
NaN – не числовое значение (расшифровывается как Not a Number). При делении на ноль возникает ошибка - на ноль делить нельзя. Чтобы этого не происходило, и ввели переменные NEGATIVE_INFINITY и POSITIVE_INFINITY. Результат умножения бесконечности на ноль - это значение NaN.

Слайд 33

Автоупаковка

Автоупаковка (Autoboxing) - это механизм неявной инициализации объектов классов-оберток (Byte, Short, Character,

Автоупаковка Автоупаковка (Autoboxing) - это механизм неявной инициализации объектов классов-оберток (Byte, Short,
Integer, Long, Float, Double) значениями соответствующих им исходных примитивных типов (соотв. byte, short, char, int, long, float, double), без явного использования конструктора класса.
Автоупаковка происходит при прямом присвоении примитива - классу-обертке (с помощью оператора "="), либо при передаче примитива в параметры метода (типа "класса-обертки"). 

Слайд 34

Автораспаковка

Автораспаковка (Unboxing) - это механизм конвертации объекта класса оболочки в соответствующий ему

Автораспаковка Автораспаковка (Unboxing) - это механизм конвертации объекта класса оболочки в соответствующий
примитивый типов (соотв. byte, short, char, int, long, float, double).

Слайд 35

Вопросы


Вопросы
Имя файла: RegExp-Обертки-Object.pptx
Количество просмотров: 40
Количество скачиваний: 0