Ответ
Да, будет видна. В Java массивы являются объектами, и ссылка на массив передаётся в метод по значению. Это означает, что метод получает копию этой ссылки, которая указывает на тот же самый массив в памяти. Поэтому любые изменения содержимого массива внутри метода отражаются на исходном массиве.
Практический пример:
import java.util.Arrays;
public class Main {
public static void sortArray(int[] arr) {
// Сортирует массив, на который ссылается параметр arr
Arrays.sort(arr);
}
public static void main(String[] args) {
int[] numbers = {3, 1, 4, 1, 5};
System.out.println("До: " + Arrays.toString(numbers)); // До: [3, 1, 4, 1, 5]
sortArray(numbers); // Передаём ссылку на массив 'numbers'
System.out.println("После: " + Arrays.toString(numbers)); // После: [1, 1, 3, 4, 5]
}
}
Ключевой момент: Метод не может изменить саму ссылку numbers в main (например, заставить её указывать на другой массив), но он может свободно менять содержимое массива, на который эта ссылка указывает.
Ответ 18+ 🔞
Давай разберём эту дичь, а то у меня уже волосы на жопе шевелятся от таких вопросов! Смотри, в Java всё устроено так, что когда ты суёшь массив в метод, ты по сути передаёшь не сам массив, а бумажку с его адресом. Копию этой бумажки, ёпта!
И вот эта копия бумажки ведёт ровно в ту же самую квартиру в памяти, где твой массив и живёт. Поэтому если ты внутри метода начнёшь там мебель переставлять — сортировать, элементы менять — то эти изменения останутся навсегда, блядь. Потому что ты работаешь с оригиналом, просто через дубликат адреса.
А вот саму бумажку в вызывающем коде — ту, что у тебя в main — ты изменить не сможешь. Не сможешь заставить её вдруг указывать на другой массив, новый. Это как пытаться переписать паспортные данные, просто показав ксерокс своего паспорта в окошко — нихуя не выйдет.
Смотри, как это выглядит в деле:
import java.util.Arrays;
public class Main {
public static void sortArray(int[] arr) {
// Тут мы сортируем тот самый массив, на который нам дали адресок
Arrays.sort(arr);
}
public static void main(String[] args) {
int[] numbers = {3, 1, 4, 1, 5};
System.out.println("До: " + Arrays.toString(numbers)); // До: [3, 1, 4, 1, 5]
sortArray(numbers); // Передаём копию ссылки на массив 'numbers'
System.out.println("После: " + Arrays.toString(numbers)); // После: [1, 1, 3, 4, 5]
}
}
Видишь? Мы вызвали метод, и массив numbers изменился навсегда, ему пиздец. Потому что метод sortArray получил доступ к оригинальному жилищу данных и там всё перевернул.
Итог, блядь: Менять содержимое — пожалуйста, хоть обосрись. А вот подменить сам массив в исходной переменной — хуй тебе, а не замена. Это и есть передача ссылки по значению, ёпта, вся соль и трагедия!