public void swap(Point var1, Point var2)
{
var1.x = 100;
var1.y = 100;
Point temp = var1;
var1 = var2;
var2 = temp;
}
public static void main(String [] args)
{
Point p1 = new Point(0,0);
Point p2 = new Point(0,0);
System.out.println("A: " + p1.x + " B: " +p1.y);
System.out.println("A: " + p2.x + " B: " +p2.y);
System.out.println(" ");
swap(p1,p2);
System.out.println("A: " + p1.x + " B:" + p1.y);
System.out.println("A: " + p2.x + " B: " +p2.y);
}
Запуск кода производит:Перестановка функция: Java код Pass-By-Value не удалось
A: 0 B: 0
A: 0 B: 0
A: 100 B: 100
A: 0 B: 0
Я понимаю, как функция изменяет значение p1, как он передается по значению. Что я не понимаю, почему смена p1 и p2 не удалась.
Нарисуйте картинку с коробками и стрелами. 'p1' и' p2' и 'var1' и' var2' - четыре различных переменных поля. Но будут только два объекта. Когда вы прослеживаете эволюцию своего кода с картинками, и вы понимаете это правильно, вы, вероятно, будете просвещены гораздо больше, чем путем чтения текстовых описаний сценария. –