我在这里有点困惑。 Arrays.sort(a)如何修改?
的值int[] a = {9,8,7,6,5,4,3,2,1};
Arrays.sort(a);
System.out.println(Arrays.toString(a));
我认为java是值得传递的......
答案 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)
答案 5 :(得分:0)
对数组的引用是按值传递的,因此sort
方法有自己的引用,仍引用与a
引用相同的数组。这意味着sort
可以更改a
引用的同一数组的内容。