- •1. Поняття класа-оболонки. Розташування цих класів ієрархії класів Java
- •2. Операції упаковки та распаковки класів-оболонок
- •3. Практичне застосування класів-оболонок
- •4. Порівняння рядків
- •5. Особливості класу String для обробки рядків
- •6. Особливості класу StringBuffer для обробки рядків. Довжина та місткість буферу
- •7. Відмінності між класами String та StringBuffer
- •8. Класи та інтерфейси каркасу колекцій мови Java
- •9. Інтерфейс Collection
- •Iterator
- •10. Порівняння реалізацій інтерфейсу List
- •11. Програмна реалізація ArrayList. Основні операції
1. Поняття класа-оболонки. Розташування цих класів ієрархії класів Java
Клас-оболонка – це клас, який надає можливість проводити над примітивними типами операції, які властиві тільки об’єктам класів (equals, compareTo, а також методи, які властиві кожному класу).
Класи оболочки перевантажують методи класу Object, як equals, compareTo,HashCode, реалізують интерфейс Comparable (CompareTo).
Наприклад при створені колекції не можна використовувати примітивні типи:
Map<int,double> map;// помилка
Map<Integer,Double> map;// вірно
2. Операції упаковки та распаковки класів-оболонок
Для операції упаковки з примітивного типу в об'єкт можна передати значення типу в конструктор створеного об'єкта або або звичайним присвоєнням(авто упаковка).
Integer num = new Integer(5);
Integer num=5;
static Integer.ValueOf(5);
Для операції розпаковки с об'єкту в примітивний тип, можна використати метод Value або звичайне присвоєння(авто розпаковка).
int a=num;
int a= num.IntValue();
3. Практичне застосування класів-оболонок
Для створення колекцій не можна використовувати примітивні типи, тому для вирішення цієї проблеми були створені класи-оболочки.
Map<int,double> map;// помилка
Map<Integer,Double> map;// вірно
Також класи-оболонки можуть мати значення null.
Представляють набір утиліт (функцій), констант, які використовуються для простих типів.
4. Порівняння рядків
Порівнювати рядки можна різними способами:
- за допомогою оператора ==, порівнюються посилання об'єктів
- за допомогою метода boolean Equals (Object o) повертає true, якщо об'єкти рівні або false якщо ні.
- за допомогою метода int compareTo (назв об о) повертає 0 якщо рівні, від'ємне значення якщо об'єкт меньший або більше 0 якщо більше.
boolean equalsIgnoreCase(String anotherString)- порівняння рядків без врахування регістру
compareToIgnoreCase (String s)
5. Особливості класу String для обробки рядків
Особливістю об'єкта класу String є те, що його значення не може бути змінено після створення об'єкта за допомогою будь-якого методу класу, так як будь-яка зміна рядка приводить до створення нового об'єкта. При цьому посилання на об'єкт класу String можна змінити так, щоб вона вказувала на інший об'єкт і тим самим на інше значення.
Клас String підтримує декілька конструкторів, наприклад: String (), String (String str), String (byte asciichar []), String (char [] unicodechar), String (StringBuffer sbuf), String (StringBuilder sbuild) і ін. Ці конструктори використовуються для створення об'єктів класу String на основі ініціалізації значеннями з масиву типу char, byte і ін.
Клас String містить наступні методи для роботи з рядками:
String concat (String s) або "+" - злиття рядків;
boolean equals (Object ob) і equalsIgnoreCase (String s) - порівняння рядків з урахуванням і без урахування регістра відповідно;
int compareTo (String s) і compareToIgnoreCase (String s) - лексикографическое порівняння рядків з урахуванням і без урахування регістру. Метод здійснює віднімання кодів символів викликає і переданої в метод рядків і повертає ціле значення. Метод повертає значення нуль в разі, коли equals () повертає значення true;
boolean contentEquals (StringBuffer ob) - порівняння рядка і вмісту об'єкта типу StringBuffer;
String substring (int n, int m) - витяг з рядка підрядка довжини mn, починаючи з позиції n. Нумерація символів в рядку починається з нуля;
String substring (int n) - витяг з рядка підрядка, починаючи з позиції n;
int length () - визначення довжини рядка;
int indexOf (char ch) - визначення позиції символу в рядку;
static String valueOf (значення) - перетворення змінної базового типу до рядка;
String toUpperCase () / toLowerCase () - перетворення всіх символів викликає рядка в верхній / нижній регістр;
String replace (char с1, char с2) - заміна в рядку всіх входжень першого символу другим символом;
String intern () - заносить рядок в "пул" литералов і повертає її об'єктну посилання;
String trim () - видалення всіх прогалин на початку і кінці рядка;
char charAt (int position) - повернення символу із зазначеної позиції (нумерація з нуля);
boolean isEmpty () - повертає true, якщо довжина рядка дорівнює 0;
byte [] getBytes (), getChars (int srcBegin, int srcEnd, char [] dst, int dstBegin) - витяг символів рядка в масив байт або символів;
static String format (String format, Object ... args), format (Locale l, String format, Object ... args) - генерує форматований рядок, отриману з використанням формату, інтернаціоналізації та ін .;
String [] split (String regex), split (String regex, int limit) - пошук входження в рядок заданого регулярного виразу (роздільник) і ділення вихідної рядки відповідно до цього на масив рядків.
У всіх випадках виклику методів, що змінюють рядок, створюється новий об'єкт типу String.
public boolean startsWith(String prefix)
public boolean endsWith(String suffix)
public boolean startsWith(String prefix, int toffset)