Главная » Java » Строковые объекты

0

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

Примеры литералов типа String уже встречались нам в примерах — в частности, в программе HelloWorld. Когда в программе появляется оператор следующего вида:

System.out.println(“Hello, world”);

компилятор Java на самом деле создает объект String, присваивает ему значение указанного литерала и передает его в качестве параметра методу println.

Объекты типа String отличаются от массивов тем, что при их создании не нужно указывать размер. Создание нового объекта String и его инициализация выполняются всего одним оператором, как показывает следующий пример:

class StringDemo {

static public void main(String args[]) { String myName = “Petronius”;

myName = myName + “ Arbiter”; System.out.println(“Name = ” + myName);

}

}

Мы создаем объект String с именем myName и инициализируем  его строковым литералом. Выражение с оператором конкатенации +, следующее за инициализацией, создает новый объект String с новым значением. Наконец, значение myName выводится в стандартный выходной поток. Результат работы приведенной выше программы будет таким:

Name = Petronius Arbiter

Кроме знака +, в качестве оператора конкатенации можно использовать оператор += как сокращенную форму, в которой название переменной размещается в левой части оператора. Усовершенствованная версия приведенного выше примера выглядит так:

class BetterStringDemo {

static public void main(String args[]) { String myName = “Petronius”;

String occupation = “Reorganization Specialist”;

myName = myName + “ Arbiter”;

myName += “ ”;

myName += “(” + occupation + “)”; System.out.println(“Name = ” + myName);

}

}

Теперь при запуске программы будет выведена следующая строка: Name = Petronius Arbiter (Reorganization Specialist)

Объекты String содержат метод length, который возвращает количество символов в строке. Символы имеют индексы от 0 до length()-1.

Объекты String являются неизменяемыми, или доступными только для чтения; содержимое объекта String никогда не меняется. Когда в программе встречаются операторы следующего вида:

str = “redwood”;

// … сделать что-нибудь со str … str = “oak”;

второй оператор присваивания задает новое значение ссылки на объект, а не содержимого строки. При каждом выполнении операции, которая на первый взгляд изменяет содержимое объекта (например, использование выше +=), на самом деле возникает новый объект String, также доступный только для чтения, — тогда как содержимое исходного объекта String остается неизменным. Класс StringBuffer позволяет создавать строки с изменяющимся содержимым; этот класс описывается в главе 8, в которой подробно рассматривается  и класс String.

Самый простой способ сравнить два объекта String и выяснить, совпадает ли их содержимое, заключается в использовании метода equals:

if (oneStr.equals(twoStr))

foundDuplicate(oneStr, twoStr);

Другие методы, в которых сравниваются части строки или игнорируется регистр символов, также рассматриваются в главе 8.

Упражнение 1.10

Измените приложение StringsDemo так, чтобы в нем использовались разные строки.

Упражнение 1.11

Измените приложение ImprovedFibonacci  так, чтобы создаваемые в нем объекты String

сначала сохранялись в массиве, а не выводились бы сразу же на печать методом println.

Источник: Арнольд К., Гослинг Д. – Язык программирования Java (1997)

По теме:

  • Комментарии