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

Jos*_*osh 6 java arrays sorting

可能重复:
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));
Run Code Online (Sandbox Code Playgroud)

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

NPE*_*NPE 10

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


Dav*_*d B 6

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

此链接演示了一些关于传递引用值的信息.

public void badSwap(Integer var1, Integer var2)
{
  Integer temp = var1;
  var1 = var2;
  var2 = temp;
}
Run Code Online (Sandbox Code Playgroud)

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

var1.doubleValue();

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


mer*_*ike 5

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