@nagvv

Всё таки в java передает массив по ссылке или нет?

Везде пишут, что java передает примитивы по значению, а обьекты по ссылке.
А так же пишут что массив это обьект передается по ссылке.

Так если должно передаваться по ссылке тогда почему у меня массив передается по значению?

import java.util.Arrays;

public class ssulk 
{
	public static void main(String[] args)
	{
		int[][] a = new int[2][2];
		a[0][0]=1;
		a[0][1]=2;
		a[1][0]=3;
		a[1][1]=4;
		
		System.out.println("1  "+a[0][0]);
		
		a[0][0]=a[1][1];
		System.out.println("2  "+a[0][0]);
		put(a[0],a[1]);
		System.out.println("3  "+a[0][0]);
		
	}
	
	static void put(int[] a,int[] b)
	{
		System.out.println("4  "+a[0]);
		a=b;
		//a=Arrays.copyOf(b, 2);
		System.out.println("5  "+a[0]);
	}
}


здесь выводит
1 1
2 4
4 4
5 3
3 4

>> передает по значению. так в чем дело?

новый вопрос по ответу:
1)так вроде Arrays.copyof() изменяет значение(!)(?) массива, но выводит то же самое
2)Как сделать так, чтобы отработала как надо?
  • Вопрос задан
  • 1924 просмотра
Решения вопроса 1
@onepavel
Консультация и разработка мобильных приложений
Все отработало правильно. Массив это объект и он передается
по ссылке. Но ссылка передается по значению.
a=b;
здесь ты манипулируешь уже копиями ссылок внутри метода.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
abs0lut
@abs0lut
Everything in Java is pass-by-value. However, if you're passing a reference, it's the value of the reference.

source
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы