Java. Рядки символів. Клас String. Частина 1

Рядки символів. Клас String. Частина 1


Зміст



1. Як в Java реалізована робота з рядками символів?

Для представлення даних, в Java існують примітивні типи даних. Серед цих типів немає рядкового типу даних. Немає також масиву символів.

Для роботи з рядками в Java використовується клас String. Об’єкт класу String дозволяє виконувати різні операції над рядками символів.

Об’єкт (змінну) типу String можна присвоювати іншому об’єкту типу String.

Перед використанням, об’єкт (змінна) типу String обов’язково має бути ініціалізована.

Рядки символів представляють собою літерали. Детально про літерали описується тут.

В мові Java будь-яка рядкова константа (рядковий літерал) є об’єктом класу String.

Приклади рядкових літералів (рядкових констант):

"Це рядок символів"
"Два\nрядки"
"Три\nрядки\nсимволів"
"Тема: \'Рядки символів\'"

 

2. Як описується об’єкт типу “рядок символів”? Приклад опису та використання

Приклад опису об’єктів (змінних) типу String.

// опис об'єктів (змінних) типу String
String s; // описується об'єкт (змінна) з іменем s типу String
String str, myString;

Після опису, об’єкту типу String можна присвоювати рядки символів (літерали):

s = "Hello world!"; // класика жанру!
str = s; // str = "Hello world!"
myString = "Hello " + "world!"; // myString = "Hello world!"

 

3. Як реалізувати початкову ініціалізацію об’єкту (змінної) типу String при його описі? Приклад

Змінна (об’єкт) типу String може бути ініціалізована при її описі. Детально про використання змінних в програмах описується тут.

Приклад ініціалізації змінної типу String.

// початкова ініціалізація змінних типу String
String s1="text";
String s2=s1; // s2 = "text"
String s3="This is a " + s2, s4 = s3 + "!"; // s3 = "This is a text", s4 = "This is a text!"

 

4. Як перевірити два рядки на рівність? Метод equals()

В Java два рядки перевіряються на рівність:

  • з допомогою операцій порівняння ‘= =‘ або ‘!=‘;
  • з допомогою методу equals() класу String.

Загальна форма методу equals():

boolean equals(другий_рядок)
boolean equalsIgnoreCase(другий_рядок)

Якщо рядки рівні, то метод equals() повертає значення true. В іншому випадку повертається false.

Метод equalsIgnoreCase() працює аналогічно методу equals(). Відмінність цього методу від методу equals() полягає в тому, що при порівнянні рядків ігнорується верхній регістр символів.

Приклад 1.

// порівняння рядків
boolean b;
String s1, s2;

s1 = "Text";
s2 = "Text";

// операція порівняння ==
b = s1 == s2; // b = true
b = s1 == "TEXT"; // b = false

// метод equals()
b = s1.equals(s2); // b = true
b = s1.equals("TEXT"); // b = false

Приклад 2. Використання в операторі умовного переходу if.

// порівняння рядків
String s1, s2;

s1 = "Text1";
s2 = "Text2";

// операція !=
if (s1!=s2)
    System.out.println("Рядки не рівні");
else
    System.out.println("Рядки рівні");

// метод equals()
if (s1.equals(s2))
    System.out.println("Рядки рівні");
else
    System.out.println("Рядки не рівні");

Приклад 3. Використання методу equalsIgnoreCase().

// метод equalsIgnoreCase()
String s1, s2;
boolean b;

s1 = "Java Eclipse";
s2 = "JAVA ECLIPSE";

b = s1.equalsIgnoreCase("JAVA ECLIPSE"); // b = true
b = s2.equalsIgnoreCase(s1); // b = true

 

5. Як визначити довжину рядка? Метод length()

Щоб визначити довжину рядка (кількість символів), потрібно використати метод length() класу String.

Загальна форма методу length():

int length()

Приклад.

// метод length()
String s;

s = "Method length()";

int n;
n = s.length(); // n = 15

 

6. Як визначити символ за заданим індексом? Метод charAt()

Метод charAt() дозволяє отримати символ за заданим індексом.

char charAt(індекс)

Приклад використання методу charAt().

// метод charAt()
String s;

s = "Java Eclipse";

char c;
c = s.charAt(0); // c = 'J'
c = s.charAt(1); // c = 'a'
c = s.charAt(2); // c = 'v'
c = s.charAt(3); // c = 'a'

 

7. Методи codePointAt() та codePointBefore()

Метод codePointAt() повертає код символу за його індексом в рядку. Метод codePointBefore() повертає код символу, що йде перед вказаним індексом.

Загальна форма методів:

int codePointAt(індекс)
int codePointBefore(індекс)

де

індекс – позиція символу в рядку, для якого повертається код.

Приклад.

// метод codePointAt()
String s;

s = "Java Eclipse";

int n;
n = s.codePointAt(0); // n = 74 - код символу 'J'
n = s.codePointAt(5); // n = 69 - код символу 'E'

// метод codePointBefore()
n = s.codePointBefore(3); // n = 118 - код символу 'v'
n = s.codePointBefore(1); // n = 74 - код символу 'J'

// помилка: "String index out of range: 0"
// n = s.codePointBefore(0);

 

8. Методи compareTo() та compareToIgnoreCase()

Методи compareTo() та compareToIgnoreCase() порівнюють два рядки в лексикографічному порядку. Методи доцільно використовувати в алгоритмах сортування рядків.

Загальна форма методів:

int compareTo(другий_рядок)
int compareToIgnoreCase(другий_рядок)

Методи повертають цілочисельне значення:

  • < 0, якщо другий рядок слідує після першого в лексикографічному порядку;
  • 0, якщо рядки одинакові;
  • >0, якщо другий рядок слідує перед першим рядком в лексикографічному порядку.

Метод compareToIgnoreCase() не враховує регістр символів.

Приклад.

// метод compareTo()
String s1, s2;
int n;

s1 = "Java Eclipse";
s2 = "";

n = s1.compareTo(s2); // n = 12
n = s1.compareTo("Java"); // n = 8
n = s2.compareTo("T"); // n = -1

// метод compareToIgnoreCase()
n = s1.compareToIgnoreCase("java ECLIPSE"); // n = 0, рядки рівні

 

9. Об’єднання рядків. Метод concat() та операція ‘+

Метод concat() дозволяє з’єднувати два рядки між собою. Також з’єднувати рядки можна з допомогою перевантаженої операції ‘+‘.

Загальна форма методу:

String concat(другий_рядок)

де другий_рядок – рядок, що додається до поточного рядка.

Приклад.

// метод concat()
String s;

s = "Hello ";
s = s.concat("world"); // s = "Hello world"
s = s.concat("!");     // s = "Hello world!"

// операція '+'
s = "Hello ";
s = s + "world"; // s = "Hello world"
s = s + "!";  // s = "Hello world!"

 

10. Об’єднання рядків. Операція +=. Приклад

Крім методу concat() та операції ‘+’ рядки можна об’єднувати з допомогою операції ‘+=’. Це є зручним, коли потрібно об’єднувати рядки з довгими іменами. Немає потреби двічі вводити довге ім’я рядка.

Приклад. Демонструються різноманітні способи конкатенації (об’єднання) рядків з допомогою операції ‘+=’

// конкатенація рядків, операція += для рядків
// конкатенація об'єктів
String s1 = "Hello ";
String s2 = "world!";
s1 += s2; // s1 = s1 + s2 = "Hello world!"

// конкатенація рядкових констант
s2 = "3";
s2 += ".";
s2 += "14";
s2 += "15"; // s2 = "3.1415"

// операція += в поєднанні зі складним виразом
s1 = "5";
s2 = "";
s2 += s1 + "*" + s1 + "=2" + s1; // s2 = "5*5=25"
s2 += s2 + s1; // s2 = "5*5=255*5=255"

Як видно з прикладу, операція

s1 += s2;

неявно замінюється операцією

s1 = s1 + s2;

 

11. Визначення наявності підрядка в рядку. Метод contains()

Метод contains() призначений для визначення наявності підрядка в рядку.

Загальна форма методу contains():

boolean contains(другий_рядок)

Метод повертає значення true, якщо другий_рядок є підрядком даного рядка. В іншому випадку повертається false.

Приклад.

// метод contains()
String s1, s2;
boolean b;

s1 = "Java Eclipse";
s2 = "Eclipse";
b = s1.contains(s2); // b = true
b = s2.contains("eclipse"); // b = false

 


Зв’язані теми