Главная » Java » Объекты String Java

0

Класс String предназначен для работы с символьными последовательностями (строками), обеспечивает высокоуровневую поддержку функций их инициализации и предоставляет в распоряжение программиста множество методов обработки строковых объектов.

Со строковыми литералами вы познакомились буквально на первых страницах нашей книги. Когда вы пишете выражение, подобное sуstеm.оut.ргintln("Здравствуй, мир!");, компилятор на самом деле создает объект типа String, инициализирует его значением заданного строкового литерала и затем передает методу println в качестве аргумента.

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

 

class StringsDemo {

            public static void main(String[] args) {

                        string myName = "Вася";

                        myName = myName + " Сидорчук";

                        sуstеm.оut.ргintln("имя = " + myName);

            }

}

 

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

Имя = Вася Сидорчук

Оператор конкатенации позволено использовать и в краткой форме, +=, которая предусматривает сцепление содержимого исходного объекта, указанного в левой части, и переменной или литерала правой части с

последующим присваиванием результата исходной ссылке. Ниже приведен измененный вариант программы.

 

class BetterStringsDemo {

            public static void main(String[] args) {

                       String myName = "Вася";

                       String occupation = "специалист по Java";

                      

                       myName += " сидорчук";

                       myName += " ";

                       myName += "(" + occupation + ")";

                       System.оut.рrintln("имя = " + myName);

            }

}

Сейчас на экран будет выведено следующее:

имя = Вася Cидорчук (специалист по Java)

Объект string обладает методом length, который возвращает количество символов, содержащихся в строке. Символы нумеруются индексными значения от 0 до length()-1. Символ, расположенный на определенной позиции, может быть найден с помощью метода charAt, который в качестве параметра принимает значение индекса и возвращает соответствующий индексу символ. Нетрудно выполнить и обратную операцию, связанную с получением массива таких же символов, какие хранятся в переменной String, – для этой цели применяется метод toCharArray класса String.

Объекты класса String доступны только для чтения: их содержимое после

инициализации остается неизменным. Рассмотрим следующий фрагмент кода:

str = "Вася";

// .,. здесь что-то с Васей происходит …

str = "Сидорчук";

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

Метод equals обеспечивает самый простой способ сопоставления содержимого двух объектов String и выявления факта его тождественности:

if (onestr.equals(twoStr))

// В объектах хранятся одинаковые строки

Другие методы, позволяющие сравнивать части строк или игнорировать различия в регистре отдельных символов, рассмотрены в главе 9. Оператор == (равно), Применяемый по отношению к объектам string, позволяет определить, ссылаются ли две переменные, скажем, oneStr и twoStr, на один и тот же объект, оператор не проверяет, совпадает ли их содержимое.

Упражнение 1.11. Измените код программы StringsDemo, предполагая использование различных строковых объектов.

Упражнение 1.12. Исправьте текст приложения ImprovedFibonacci таким Образом, чтобы вычисленные значения совместно с признаками четности предварительно сохранялись в массиве объектов String.

 

Источник: Арнолд, Кен, Гослинг, Джеймс, Холмс, Дэвид. Язык программирования Java. 3-е изд .. : Пер. с англ. – М. : Издательский дом «Вильяме», 2001. – 624 с. : ил. – Парал. тит. англ.

По теме:

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