
- •Лабораторная работа 3 «Методы класса. Работа с массивами и строками в Java»
- •Понятия функции и метода
- •Объявление метода
- •Вызов метода
- •Работа с массивом
- •Задание 3
- •Работа со строками Создание строк
- •Задание 4
- •Заголовок метода main()
- •Задание 5
- •Дополнительный материал. Работа с датой и временем
- •Задание 6 (дополнительное*)
Работа с массивом
После объявления массива с ним можно работать. Например, присваивать значения элементам массива и вообще обращаться с ними как с обычными переменными. Для обращения к конкретному элементу необходимо указать имя переменной, указывающей на массив, и его индекс в квадратных скобках. Нумерация элементов массива начинается с нуля.
Примеры:
a[0] = 5; // Первому элементу массива a, присваивается значение 5
a[3] = 17; // Четвертому элементу массива a, присваивается значение 17
a[1] = a[0] – a[3]; // Второму элементу массива a присваивается значение -12
Длину массива можно определить, используя запись:
идентификатор_массива.length
Например, a.length будет равняться 5.
Очень удобно перебирать все элементы массива в цикле типа for. При этом обычно используется следующая форма:
for (int i = 0; i < a.length; i++) {// здесь можно что-нибудь сделать с элементом a[i]}
Например, следующий код присваивает всем элементам массива b числа от 1 до 4 (поскольку в массиве b четыре элемента):
for (int i = 0; i < b.length; i++) {b[i] = i;}
За границы массива выходить нельзя. Т.е., если в массиве a пять элементов, то обращение к шестому или восьмому элементу приведет к ошибке (точнее, возбуждению исключения).
a[5] = 8; // Нельзя, в массиве a только 5 элементов: a[0], a[1], a[2], a[3], a[4]
Задание 3
Напишите метод, увеличивающий элементы массива на 10%.
Подсказка: подумайте, какие у этого метода входные и выходные данные. Решите сами, должен ли метод изменять исходный массив, или в результате работы будет создаваться новый. Напишите к методу комментарии.
Работа со строками Создание строк
Строки тоже являются переменными ссылочного типа, а точнее — ссылками на объекты одного из нескольких строковых классов Java. Мы рассмотрим класс String.
Самый распространенный способ создать строку — это организовать ссылку типа String на строку-константу:
String s = "Это строка";
Можно просто сначала объявить переменную (которая получит значение null), а потом заставить ее ссылаться на строку-константу, другую строку или воспользоваться командой new, чтобы явным образом выделить память для строки:
String s1, s2, s3; // Объявление трех переменных, которые пока не связаны ни с какой строкой
s1 = "Да здравствует день танкиста"; // Переменная s1 теперь ссылается на область памяти, в которой хранится строка "Да здравствует день танкиста"
s2 = s1; // Теперь обе переменные s1 и s2 ссылаются на одно и то же место памяти
s3 = new String(); // s3 ссылается на место в памяти, где хранится пустая строка
Класс String содержит следующие методы для работы со строками:
String concat(String s) или “+” – слияние строк;
boolean equals(Object ob) и equalsIgnoreCase(String s) – сравнение строк с учетом и без учета регистра соответственно;
int compareTo(String s) и compareToIgnoreCase(String s) – лексикографическое сравнение строк с учетом и без учета регистра. Метод осуществляет вычитание кодов символов вызывающей и передаваемой в метод строк и возвращает целое значение. Метод возвращает значение нуль в случае, когда equals() возвращает значение true;
boolean contentEquals(StringBuffer ob) – сравнение строки и содержимого объекта типа StringBuffer;
String substring(int n, int m) – извлечение из строки подстроки длины (m-n), начиная с позиции n. Нумерация символов в строке начинается с нуля;
String substring(int n) – извлечение из строки подстроки, начиная с позиции n;
int length() – определение длины строки;
int indexOf(char ch) – определение позиции символа в строке;
static String valueOf(значение) – преобразование переменной базового типа к строке;
String toUpperCase()/toLowerCase() – преобразование всех символов вызывающей строки в верхний/нижний регистр;
String replace(char с1, char с2) – замена в строке всех вхождений первого символа вторым символом;
String intern() – заносит строку в “пул” литералов и возвращает ее объектную ссылку;
String trim() – удаление всех пробелов в начале и конце строки;
char charAt(int position) – возвращение символа из указанной позиции (нумерация с нуля);
boolean isEmpty() – возвращает true, если длина строки равна 0;
byte[] getBytes(), getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) – извлечение символов строки в массив байт или символов;
static String format(String format, Object... args), format(Locale l, String format, Object... args) – генерирует форматированную строку, полученную с использованием формата, интернационализации и др.;
String[] split(String regex), split(String regex, int limit) – поиск вхождения в строку заданного регулярного выражения (разделителя) и деление исходной строки в соответствии с этим на массив строк. Метод split(String regExp) разбивает текст на слова, используя в качестве разделителей символы, входящие в параметр regExp, и возвращает ссылку на массив, составленный из этих слов. Параметр regExp представляет собой список разделителей слов (прбел, ?!,.: и т.п.). Сами разделители ни в одно слово не входят.
Во всех случаях вызова методов, изменяющих строку, создается новый объект типа String.
В следующем примере спользуются методы работы со строками.
public class stringsamoilova {
static int i;
public static void main(String[] args) {
primer1();
}
public static void primer1(){
String str1 = "В траве сидел кузнечик";
i = str1.length();
String str2 = " совсем как огуречик.";
str2 = str1.concat(str2);
str2 = str2.toUpperCase();
System.out.println(str2);
str2 = str2.replace("ЧИК", "Ц");
System.out.println(str2);
str1 = str2.substring(8, 22).toLowerCase();
System.out.println(str1);
String[] arr = str2.split(" ");
for (String ss : arr)
System.out.println(ss);
}
}
Отладьте данный пример, заменив строки произвольным текстом.