「java学習ノート」読書ノートの高度な配列操作と「=」操作

1308 ワード

Javaでは、=演算が基本データ型に使用される場合は変数に値をコピーしますが、オブジェクトに使用される場合は参照参照名にオブジェクトを指定して参照します.
同じオブジェクトを2つの参照参照名に割り当てることもできます.オブジェクトの値のうちの1つが参照参照名を操作して変更されると、別の参照名が参照する値も変更されます.
public class AdvancedArray{
  public static void main(String[] args){
    int[] arr1 = {1,2,3,4,5};
    int[] tmp1 = arr1;
    int[] tmp2 = arr1;

    System.out.print("  tmp1     :");
      for(int i = 0;i<tmp1.length;i++)
    System.out.print(tmp1[i] + " ");

    System.out.print("  tmp2     :");
      for(int i = 0;i<tmp2.length;i++)
    System.out.print(tmp2[i] + " ");

    tmp1[2] = 9;
    System.out.print("

tmp1 :"); for(int i = 0;i<tmp1.length;i++) System.out.print(tmp1[i] + " "); System.out.print("
tmp2 :"); for(int i = 0;i<tmp2.length;i++) System.out.print(tmp2[i] + " "); } }

実行結果:
tmp 1で配列値を取り出す:1 2 3 4 5
tmp 2で配列値を取り出す:1 2 3 4 5
tmp 1で配列値を取り出す:1 2 9 4 5
tmp 2で配列値を取り出す:1 2 9 4 5
上記の例では、tmp 1名でインデックス2の要素値を変更し、tmp 2も同じ配列オブジェクトから参照されるため、tmp 2がインデックス2を取り出す要素値は変更後の値である.例ではarr 1,tmp 1,tmp 2であるため、arr 1インデックス2の要素を取り出すと要素値も9となる.