
- •Основы классов
- •Общая форма класса
- •Простой класс
- •Объявление объектов
- •Операция new
- •Представление методов
- •Добавление метода к классу Box
- •Возврат значений
- •Добавление метода с параметрами
- •Конструкторы
- •Параметризованные конструкторы
- •Ключевое слово this
- •Скрытие переменной экземпляра
- •Сборка "мусора"
- •Метод finalize()
- •Класс Stack
- •Перегрузка конструкторов
- •Использование объектов в качестве параметров
- •Передача аргументов
- •Возврат объектов
- •Рекурсия
- •Управление доступом
- •Статические элементы
- •Спецификатор final
- •Ревизия массивов
- •Вложенные и внутренние классы
- •Класс String
- •Использование аргументов командной строки
- •Наследование
- •Основы наследования
- •11 Тело класса }
- •Доступ к элементам и наследование
- •Практический пример
- •Переменная суперкласса может ссылаться на объект подкласса
- •Использование ключевого слова super
- •Вызов конструктора суперкласса с помощью первой формы super
- •Создание многоуровневой иерархии
- •II построить клон объекта
- •Когда вызываются конструкторы
- •Переопределение методов
- •Динамическая диспетчеризация методов
- •Зачем нужны переопределенные методы?
- •Применение переопределения методов
- •Использование абстрактных классов
- •Void meth() { // ошибка! Нельзя переопределять.
- •Класс Object
Класс String
Хотя класс string будет подробно рассмотрен в Части II этой книги, краткое его рассмотрение необходимо уже теперь, потому что в некоторых примерах программ, показанных в конце Части I, мы будем использовать строки, string – это, пожалуй, чаще всего используемый класс в библиотеке классов Java. Причина очевидна – строки являются очень важной частью программирования.
Для начала важно понять, что каждая строка, которую вы создаете, в действительности является объектом типа string. Даже строчные константы – это фактически string-объекты. Например, в утверждении
System.out.println("This is a String, too");
строка "This is a String, too" является string-константой. К счастью, Java обрабатывает string-константы так же, как другие машинные языки обрабатывают "нормальные" строки, так что вас это не должно беспокоить.
Кроме того, нужно понять, что объекты типа string неизменяемы. Если string-объект создан, то его содержимое не может быть изменено. Хотя данное утверждение похоже на серьезное ограничение, однако это не так по двум причинам:
-
если нужно изменить строку, то всегда можно создать ее новую модифицированную копию;
-
Java определяет класс просмотра (peer class) для string, называемый stringBuffer, который позволяет строкам стать изменяемыми, так что все нормальные манипуляции со строками все еще доступны в Java. (stringBuffer описан в Части II этой книги.)
Строки можно создать множеством способов. Самый простой – с помощью следующего утверждения:
String myString = "Это тест";
Как только вы создали string-объект, то можете использовать его везде, где допустима строка. Например, следующее утверждение выводит mystring-объект на экран дисплея:
System.out.println(myString);
Java определяет одну операцию для string-объектов, которая обозначается знаком плюс (+). Она используется для сцепления (конкатенации) двух строк. Например, такой оператор:
String myString = "Мне"'+ " нравится программировать на " + "Java.";
приводит к следующему содержимому объекта myString: "Мне нравится программировать на Java".
Предыдущие концепции демонстрирует следующая программа:
// Демонстрация строк, class StringDemo {
public static void main(String args[]) {
String strObl = "Первая строка";
String strOb2 = "Вторая строка";
String strObS = strObl + " и " + Str0b2;
System.out.println(strObl); System.out.println(strOb2); System.out.println(strObS); } }
Вывод, выполняемый этой программой:
Первая трока
Вторая строка
Первая строка и Вторая строка
Класс string содержит несколько полезных методов. Используя equals о, можно проверять две строки на равенство. Длину строки можно получить, вызывая метод lengtho. Вызывая charAto, можно получить символ строки с указанным индексом (номером). Общие формы из этих трех методов:
boolean equals(String object)
int length()
char charAt(int index)
Ниже приведена программа, которая демонстрирует эти методы:
// Демонстрация некоторых методов класса String, class StringDemo2 {
public static void main(String args(]) (
String strObl = "Первая строка"; String strOb2 = "Вторая строка"; String strOb3 = strObl;
System.out.printIn("Длина strObl: " + strObl. length ());
System.out.println("Символ с индексом 3 в strObl: " + strObl.charAt(3));
if(strObl.equals(strOb2))
System.out.println("strObl == strOb2"); else
System.out.println("strObl != strOb2");
if(strObl.equals(strOb3))
System.out.println("strObl == strOb3"); else
System.out.println("strObl != strObS"); } }
Эта программа генерирует следующий вывод:
Длина strObl: 12
Символ с индексом 3 в strObl: в
strObl != strOb2
strObl == strOb3
Можно, конечно, создавать и массивы строк, аналогично тому, как создаются массивы любого другого типа объектов. Например:
// Демонстрирует String-массивы, class StringDemoB {
public static void main(String args[]) { String str[] = { "один", "два", "три" };
forfint i=0; i<str.length; i++)
System.out.println("str[" + i + "]: " + str[i]); ) }
Вывод этой программы:
str [0] : один str [1] : два str [2] : три
Как вы увидите в следующем разделе, массивы строк играют важную роль во многих Java-программах.