7

重複の可能性:
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は値渡しだと思っていました...

4

6 に答える 6

11

はい、Java は値渡しです。ただし、ここで値渡しされるのは、配列自体ではなく、配列への参照です。

于 2012-05-25T15:09:43.887 に答える
6

Java のオブジェクトは、 reference の値によって渡されます。したがって、オブジェクトを渡すと、参照のコピーが取得されます (その参照を別のものに割り当てた場合、パラメーターのみが変更され、元のオブジェクトは引き続き存在し、メイン プログラムによって参照されます)。

このリンクは、 reference の値による受け渡しについて少し示しています

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

これらはオブジェクトへの参照ですが、関数スコープ内の内部参照のみであるため、スワップされません。ただし、これを行う場合:

var1.doubleValue();

元のオブジェクトへの参照を使用します。

于 2012-05-25T15:10:02.277 に答える
5

Arrays.sort変数を変更するのではなく、変数が指す配列オブジェクトを変更します。

于 2012-05-25T15:10:21.530 に答える
2

確かに、Java は常に値渡しを行い、オブジェクトの場合、値渡しによるオブジェクトの参照を行います。したがって、配列の参照は値渡しされます。

于 2012-05-25T15:10:21.077 に答える
1
  1. それはそれを並べ替えます。
  2. 配列への参照は、値によって渡されます。配列自体ではありません。
于 2012-05-25T15:10:43.400 に答える
0

配列への参照は値によって渡されるため、sortメソッドには参照として同じ配列を参照する独自の参照がありaます。これはsort、参照する同じ配列の内容を変更できることを意味しaます。

于 2012-05-25T15:12:02.247 に答える