Имеется массив строк:
String[] str = {"один", "два", "три", "четыре", "пять", "шесть", "семь"};
Имеется метод, который принимает массив строк и выполняет с ним какие-либо действия:
public static void methodStr(String[] s) {
// code
}
Вопрос: как правильно передать определенные элементы массива String'ов? Например, нужно передать только str[3]
, str[4]
и str[5]
элементы - public static void methodStr(str[с 3-го по 5-й])
?
Важно: без создания нового String[]
!
String - ссылочный тип данных, как и массив. Это значит, что при передаче его в аргументы метода, вы передаете ссылку на объект. Ссылок может быть много, а объект один.
Например: String s1 = "value"; String s2 = s1;
Теперь в результате вывода и переменной s1 и s2 в консоль вы увидите value. Вместе с тем, это лишь ссылки, в памяти будет хранится только одно значение - value. Это же происходит при передаче массива. Мы передаем массив массив и работаем с ним как с ссылкой. Фактическое копирование не происходит.
В вашей ситуации есть несколько вариантов:
1) methodStr(String[] s, int startIndex, int endIndex) - то, что уже вам предложено. Передавать весь массив в метод, а работать только с элементами , которые расположены в пределах индексов int startIndex, int endIndex
2) произвести копирование нужной части массива и передать его в метод
3) изменить сигнатуру с methodStr(String[] s) на methodStr(String ... s) . После этого при вызове данного метода вы можете передать в его аргументы произвольное количество только нужных элементов массива через запятую. Например, имея массив String[] str = {"один", "два", "три", "четыре", "пять", "шесть", "семь"}; для того, чтобы передать в метод элементы с 0 до 2 включительно нужно вызвать данный метод таким образом: methodStr(str[0], str[1], str[2]);
В последнем случае вы можете передавать в аргументы метода любые элементы массива (любое их количество и в любом порядке, т.е. не обязательно именно так, как они расположены в исходном массиве).
Посему у вас всего несколько вариантов... Сделать так, как предложено выше, т.е. передать весь массив и работать только с элементами в пределах startIndex и endIndex. скопировать часть массива и передать его в параметры. инменить сигнатру public static void methodStr(String[] s)
Можно добавить ещё один метод с дополнительным параметром int... filter
- какие строки обрабатывать. Чтобы старый функционал остался прежним, его надо будет немного доплилить:
public static void methodStr(String[] s) {
methodStr(s, IntStream.range(0, s.length).toArray());
}
public static void methodStr(String[] s, int... filter) {
Arrays.stream(filter).mapToObj(i -> s[i]).forEach(str -> {
// code
});
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Ошибок никаких не выдаёт, просто возвращает nullQuery, посылаемый в базу данных, предполагается в виде Query = "SELECT * FROM users WHERE Login = "Login" AND Password = 12345;
Я разрабатываю свой редактор Web-кода и хочу чтобы при нажатии на определённый файл (а именно html, js, css и txt) открывался редактор (MainActivity) и в EditText...
Подскажите пожалуйста, что делаю неправильноПри запуске программы и ввода данных в форму, в debug значения имени и пароля пустые(фото ниже)
Собственно, после вот этого условия: if(eventgetMessage()