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

时间:2012-05-25 15:08:20

标签: java arrays sorting

  

可能重复:
  Is Java pass-by-reference?

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

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

我认为java是值得传递的......

6 个答案:

答案 0 :(得分:10)

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

答案 1 :(得分:6)

Java中的对象由引用值传递。因此,如果传入一个对象,它将获得一个引用的副本(如果您将该引用分配给其他内容,则仅修改该参数,原始对象仍然存在并由主程序引用)。

This link demonstrates a bit about passing by value of reference

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

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

var1.doubleValue();

它将引用用于原始对象。

答案 2 :(得分:5)

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

答案 3 :(得分:2)

确实,Java始终按值传递,对于对象,通过值传递对象的引用。因此,数组的引用按值传递。

答案 4 :(得分:1)

  1. 对它进行排序。
  2. 对数组的引用按值传递。不是数组本身。

答案 5 :(得分:0)

对数组的引用是按值传递的,因此sort方法有自己的引用,仍引用与a引用相同的数组。这意味着sort可以更改a引用的同一数组的内容。