Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Распределенные вычислительные системы..pdf
Скачиваний:
16
Добавлен:
05.02.2023
Размер:
1.74 Mб
Скачать

14

{6, 5, 20}};

// Массив 2x3

String[] s2 = {"Текст0",

 

"Текст1",

 

"Текст2"};

// Три элемента

}

}

В качестве данных объявляемых массивов могут выступать классы. В следующем примере класс Type2 используется как массив в классе Array3:

package rvs.pr3;

/**

*Класс, выступающий как элемент массива.

*@author vgr

*

*/

class Type3

{

int i; double d;

}

/**

*Класс использующий другой класс как массив.

*@author vgr

*

*/

public class Array3 {

public static void main(String[] args) { /**

* Объявляем и инициализируем массив объектов. */

int N = 10;

Type3[] t3 = new Type3[N]; // Выделяем ссылки. for(int i=0; i<N; i++)

{

t3[i] = new Type3(); // Создаем объект. t3[i].i = i;

t3[i].d = 1.41 * i;

}

}

}

1.1.6Работа со строками

Впрограммировании постоянно приходится использовать строковые объекты, которые представляют собой массивы символов. Язык Java предоставляет два типа строковых объектов:

1. java.lang.String неизменяемый строковый объект; все действия совершаемые по изменению такого объекта приводят к созданию новой строки.

2. java.lang.StringBuffer изменяемый строковый объект, допускающий доступ к его элементам и изменению самого объекта.

15

Достаточно полному описанию свойств этих объектов посвящена глава 13 учебника [2, глава 13, стр. 331-357]. В данном пункте, мы ограничимся описанием наиболее часто употребляемых свойств, которые продемонстрируем конкретными примерами. Начнем с класса String. Обратите внимание, что в каждом операторе создается новая строка:

package rvs.pr3; /**

*Примеры использования класса String.

*@author vgr

*

*/

public class String2 {

public static void main(String[] args) { // Типичное создание строки

String str1 = " Первый пример создания строки ";

//Создание строки на основе массива символов char[] char1 = {'П','е','р','в','ы','й'}; String str2 = new String(char1);

//Создание пустого строкового объекта

String str3 = new String();

//Копирование строки str1 в строку str3 str3 = str1;

//Извлечение 5-го символа из строки str1 char char2 = str1.charAt(5);

//Удаление всех пробелов в начале и конце строки str1 = str1.trim();

//Выделение подстроки

str3 = str1.substring(0,6);

// Сравнение строк if(str2.equals(str3))

System.out.println("Строки равны");

//Замена символа 'е' на символ 'Е' в строке str1 str1 = str1.replace('ы', 'Ы');

//Разделение строки на слова и вычисление длины слов String[] str4 = str1.split(" ");

for(int i=0; i<str4.length; i++)

System.out.println(str4[i] + ": " + str4[i].length() + " -> " + str4[i].getBytes().length);

}

}

Теперь рассмотрим класс StringBuffer. Главное его отличие — возможность изменения объекта без создания нового экземпляра. Это значительно увеличивает скоромть вычислений, если со строками производится множество преобразований.

Класс StringBuffer содержит три основных конструктора: 1. Создание пустой строки StringBiffer();

16

2.Создание строки с начальным значением StringBiffer(String str).

3.Создание пустой строки с выделением памяти StringBiffer(int length).

Влюбом случае, память буферу выделяется автоматически, поэтому, если строка длинее в выделенного буфера, то ему будет добавлена память. Приведем несколько примеров:

package rvs.pr3; /**

*Примеры использования класса StringBuffer.

*@author vgr

*

*/

public class BString {

public static void main(String[] args) { // Пустой буфер

StringBuffer sb1 = new StringBuffer();

//Пустой буфер размера 10 символов StringBuffer sb2 = new StringBuffer(10);

//Буфер инициализирован строкой StringBuffer sb3 =

new StringBuffer(" Первый пример создания строки ");

//Добавление в начало строки

sb3.insert(0, "<Начало строки>");

//Добавление в конец строки sb3.append("<Конец строки>"); System.out.println(sb3);

//Реверс строки

sb3.reverse(); System.out.println(sb3);

}

}

1.1.7 Управляющие операторы

Описание управляющих операторов перечисленно в [1, подраздел 2.3, стр. 59-60]. Обычно их использование не вызывает затруднений у студентов изучивших языки С и С++. Тем более, что они постоянно используются во всех приведенных примерах. Если все же возникают какие-либо вопросы по их применению управляющих операторов, то следует воспользоваться учебником [2, глава 5, стр. 106-132].

Задание по практическому занятию №1. Следует внимательно изучить примеры приведенные в данном подразделе и добавить в них свои комментарии и вывод на печать. Этот материал используется в лабораторной работе №2.