Java: Параметры методов
Метод length() не требует никаких уточнений. Он всегда работает однозначно и извлекает полную длину строки.
Но так бывает не всегда. Например, если мы хотим извлечь первый символ из строки, то нам нужно явно указать, что символ первый. Для этого в вызовы методов можно передавать параметры:
var searchEngine = "google";
// Возвращает первый символ (тип char)
searchEngine.charAt(0); // 'g'Почему символ первый, а указан 0? В программировании отсчет начинается с нуля. Поэтому первый символ находится на нулевой позиции — «индекс 0».
Соответственно, у последнего символа индекс равен длине строки минус 1:
// google length => 6
searchEngine.charAt(5); // 'e'Несколько параметров
Параметров может быть больше, чем один. Например, метод replace() работает с двумя, где первый — что заменить, а второй – на что:
searchEngine.replace("go", "mo"); // "moogle"Значения по умолчанию
Параметры могут содержать значение по умолчанию там, где это значение используется чаще всего.
Такая возможность в языках добавлена, чтобы избавить программиста от рутины. Простой пример – метод, извлекающий из строки подстроку, то есть часть строки.
Этот метод принимает на вход:
- Первым параметром индекс, с которого надо начать извлекать подстроку
- Вторым параметром — индекс, до которого нужно извлекать символы
По умолчанию берется строка до конца:
"hexlet".substring(1); // "exlet"
"hexlet".substring(1, 2); // "e"
"hexlet".substring(1, 3); // "ex"
"hexlet".substring(3, 6); // "let"Задание
Вам даны три переменные с фамилиями разных людей. Составьте и выведите на экран слово из символов в таком порядке:
- третий символ из первой строки;
- второй символ из второй строки;
- четвертый символ из третьей строки;
- пятый символ из второй строки;
- третий символ из второй строки.
Вывод результата должен быть примерно в таком виде:
a b c d eВаше упражнение проверяется по этим тестам
import java.io.ByteArrayOutputStream;
import java.io.FileDescriptor;
import java.io.FileOutputStream;
import java.io.PrintStream;
import static org.assertj.core.api.Assertions.assertThat;
class Test {
public static void main(String[] args) {
final var expected = "h o d o r";
ByteArrayOutputStream out = new ByteArrayOutputStream();
System.setOut(new PrintStream(out));
App.main(null);
final var actual = out.toString().trim();
System.setOut(new PrintStream(new FileOutputStream(FileDescriptor.out)));
System.out.println(actual);
assertThat(actual).isEqualTo(expected);
}
}Решение учителя откроется через:
20:00
