Arrays.sort()如何更改传递给它的变量?

可能重复:
Java是否通过引用?

我在这里有点困惑。 Arrays.sort(a)如何修改a的值?

int[] a = {9,8,7,6,5,4,3,2,1};
Arrays.sort(a);
System.out.println(Arrays.toString(a));

我认为Java是通过价值...


是的,Java是通过价值传递的。 但是,在这里传递的值是对数组的引用,而不是数组本身。


Java中的对象通过引用的值传递。 所以如果你传入一个对象,它会得到一个引用的副本(如果你将该引用分配给别的东西,只有该参数被修改,原始对象仍然存在并且被主程序引用)。

这个链接展示了有关传递参考值的一些信息。

public void badSwap(Integer var1, Integer var2)
{
  Integer temp = var1;
  var1 = var2;
  var2 = temp;
}

这些是对象的引用,但它们不会被交换,因为它们只是函数作用域中的内部引用。 但是,如果你这样做:

var1.doubleValue();

它将使用对原始对象的引用。


Arrays.sort不修改变量,它修改变量指向的数组对象。

链接地址: http://www.djcxy.com/p/3519.html

上一篇: How does Arrays.sort() change the variable passed to it?

下一篇: Object state does not change after method call