public class MainTest{
public static void main(String[] args) {
//new MyClass();
int mas[]=new int[]{1,2,3,4,5};
test(mas);
for (int i = 0; i < mas.length; i++) {
System.out.println("Main "+mas[i]);
}
}
public static void test(int mas[]){
testA(mas);
for (int i = 0; i < mas.length; i++) {
System.out.println("test "+mas[i]);
}
}
public static void testA(int mas[]){
mas[0]=100;
mas[1]=100;
mas[2]=100;
for (int i = 0; i < mas.length; i++) {
System.out.println("testA "+mas[i]);
}
}
}
Возможно я что - то не так понимаю. Но по моей логике переменная переданная в метод и дальнейшие модификации с ней должны остаться в это методе, и исчезнуть вместе с методом. Но в итоге я вижу в main измененный массив mas.
Почему так происходит. Потому что в таком случае пропадает надобность в return....В Java давно, а тут такое. Видать что - то серьезное я забыл....
testA 100
testA 100
testA 100
testA 4
testA 5
test 100
test 100
test 100
test 4
test 5
Main 100
Main 100
Main 100
Main 4
Main 5
@AlexChermenin замудрено объяснили. Объекты передаются по ссылке, примитивы по значению. Массивы примитивов - это объекты, поэтому передаются также по ссылке.
Обновлено: под передачей по ссылке я имею ввиду, что объект таки передается по значению. Но в значении содержится ссылка на объект, а не копия объекта.
Примитивы (https://ideone.com/c9agyH):
int number = 0;
void update(int num) {
num++;
System.out.println(num); // 1
}
update(number);
System.out.println(number); // 0
Массив примитивов (https://ideone.com/SrzjUd):
int[] numbers = new int[]{1,2,3,4,5};
void update(int[] nums) {
for(int i=0; i < nums.length; i++) {
nums[i] = 5-i;
}
}
update(numbers);
/**
* Ага, а тут кстати вызывается toString(), чего нет у примитивов
*/
System.out.println(numbers); // {5,4,3,2,1}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
создаю метку с балуном, в balloonContentBody вписываю html c классом 'set-moderated' для срабатывания события jquery, но оно не срабатываетЗнаю, что есть решение...