Короткий огляд класу String
Клас String відноситься до найбільш вживаних класів із бібліотеки класів java. Це тому, що символьні рядки є дуже важливим засобом програмування.
По-перше, будь-який символьний рядок, насправді є об'єктом класу String. І навіть рядкові константи в дійсності є об'єктами класу String.
По-друге, об'єкти класу String є незмінними. Як тільки об'єкт буде створено, його вміст змінити неможливо.
Причини такого обмеження:
- якщо потрібно змінити символьний рядок, то завжди можна створити новий.
- в java визначені класи StringBuffer та StringBuilder, рівноправні класу String, які допускають зміну символьних рядків, що дозволяє виконувати всі звичні операції із символьними рядками.
Створення символьного рядка:
String myString = "Це тестовий символьний рядок";
Як тільки об'єкт класу String буде створено, його можна буде використати всюди.
Операція +
Для об'єктів класу String визначена операція +, призначена для зчіплювання рядків:
String myString = " Це " + " тестовий " + " рядок " + " Java. ";
Output: Це тестовий рядок Java.
Методи класу String
boolean equals (інший_рядок) - порівняння рядків;int lenqth ( ) - довжина символьного рядка;
char charAt (індекс) - отримання символу за індексом.
Приклад
class StringDemo2 {
public static void main ( String args [ ] ){
String str1="Перший рядок";
String str2="Другий рядок";
String str3="Третій рядок";
System.out.println ( " Довжина рядка str1: " + str1.length ( ));
System.out.println ( " Символ за індексом 3 в рядку str1: " + str1.charAt(3));
if (str1.equals(str2))
System.out.println ( str1==str2);
else
System.out.println ( str1!=str2);
if (str1.equals(str3))
System.out.println ( str1==str3);
else
System.out.println ( str1!=str3);
}
}
Output:
Довжина рядка str1: 12
Символ за індексом 3 в рядку str1: ш
true
true
Що таке пул рядків в Java?
Пул рядків ( String Pool ) - це безліч рядків в купи ( Java Heap Memory ). String - особливий клас в java, за допомогою якого можна створювати рядкові об'єкти.
На діаграмі нижче - рядковий пул розташований в пам'яті Java Heap. Існують різні способи створення рядків, які впливають на розташування їх у пам'яті.
Сам строковий пул можливий тільки тому, що рядки в Java незмінні . Також пул рядків дозволяє зберегти пам'ять в Java Runtime, хоча це і вимагає більше часу на створення самої рядки.
На діаграмі нижче - рядковий пул розташований в пам'яті Java Heap. Існують різні способи створення рядків, які впливають на розташування їх у пам'яті.
Приклад роботи з пулом рядків
Коли використовуємо подвійні лапки, щоб створити новий рядок, то першим ділом йде пошук рядка з таким же значенням в пулі рядків. Якщо java такий рядок знайшла, то повертає посилання, в іншому випадку створюється новий рядок в пулі, а потім повертається посилання.Однак, використання оператора new змушує клас String створити новий об'єкт String. Після цього можемо використовувати метод intern(), щоб помістити цей об'єкт у пул рядків або звернутися до іншого об'єкту з пулу рядків, який має таке ж значення.
Нижче наведена програма, яка демонструє роботу з пулом рядків:
StringPool.java