Java. Строки символов. Класс String. Часть 1

Строки символов. Класс String. Часть 1


Содержание



1. Как в Java реализована работа со строками символов?

Для представления данных, в Java существуют примитивные типы данных. Среди этих типов нет строчного типа данных. Нет также массива символов.

Для работы со строками в Java используется класс String. Объект класса String позволяет выполнять различные операции над строками символов.

Объект (переменную) типа String можно присваивать другому объекту типа String.

Перед использованием, объект (переменная) типа String обязательно должен быть инициализирован.

Строки символов представляют собой литералы. Подробно использование литералов в Java описывается здесь.

В языке 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

 


Связанные темы