私はJavaのリファレンスを試していましたが、興味深い状況がありました。 次のコードは、私に予測できない出力を与えます。関数の配列、文字列、整数を変更しようとしています。JavaのpassByValueまたはReferenceの混乱
public static void main(String[] args){
int[] arr = {1,2,3,4,5};
Integer b = 6;
String s = "ABC";
fun(arr, b,s);
for(int i : arr)
System.out.print(i + " ");
System.out.println();
System.out.println("b="+b);
System.out.println("s="+s);
}
public static void fun(int[] a, Integer b, String s){
b = b*10;
for(int i =0; i<a.length; i++)
{
a[i] = a[i]+10;
}
s=s+"PIY";
}
は今、これは次のような出力が得られます。配列が変化しつつあるが、文字列と整数が関数内で変更取得されていない理由を
11 12 13 14 15
b=6
s=ABC
私は理解していません。
お知らせ不変ではない一般的なオブジェクトの場合は?これは 'a'を変更しているので、再割り当てしません。 – shmosel