配列のクローン - 萌えJava超入門
第十一章
メモリで見る基本型とクラス型の違い

配列のクローン

同じ値を持つ別々の配列インスタンスが欲しい場合。


配列のクローン

このページは参考程度のつもりで読んでくれ。
理解が深まるだろうと思って掲載した。
同じ値を持つ別々の配列インスタンスが欲しい場合の紹介を
ちょっとだけします。
このページの内容は、いずれ詳しく説明していきますね。

//Sample06_05.java
class Sample06_05 {
  public static void main(String[] args){

    int[] array_1 = new int[4];

    /*要素に値を代入*/
    for(int i=0; i<array_1.length; i++){
        array_1[i] = i + 1;
    }

    int[] array_2 = array_1.clone();

    /*要素の値を確認*/
    System.out.println("---------array_1-----------");
    for(int i=0; i<array_1.length; i++){
        System.out.println("array_1[" + i +
                           "]" + " = " + array_1[i]);
    }

    System.out.println("---------array_2-----------");
    for(int i=0; i<array_2.length; i++){
        System.out.println("array_2[" + i + "]" +
                           " = " + array_2[i]);
    }


    System.out.println("----------------------------");
    array_1[1] = 999;//要素の値を変更
    System.out.println("-----array_1[1] = 999;-----");
    System.out.println("----------------------------");

    /*要素の値を確認*/
    for(int i=0; i<array_1.length; i++){
        System.out.println("array_1[" + i +
                           "]" + " = " + array_1[i]);
    }

    System.out.println("---------array_2-----------");
    for(int i=0; i<array_2.length; i++){
        System.out.println("array_2[" + i + "]" +
                           " = " + array_2[i]);
    }
  }
}

コマンドライン
>javac Sample06_05.java
>java Sample06_05
---------array_1-----------
array_1[0] = 1
array_1[1] = 2
array_1[2] = 3
array_1[3] = 4
---------array_2-----------
array_2[0] = 1
array_2[1] = 2
array_2[2] = 3
array_2[3] = 4
----------------------------
-----array_1[1] = 999;-----
----------------------------
array_1[0] = 1
array_1[1] = 999 ← ココ
array_1[2] = 3
array_1[3] = 4
---------array_2-----------
array_2[0] = 1
array_2[1] = 2 ← ココ
array_2[2] = 3
array_2[3] = 4

配列のメソッド「clone()」を使うと、要素の値が同じインスタンスを生成します。
これを別の配列変数(ここでは array_2)に代入すると、
別々の配列として利用できます。

配列の cloneメソッド
int[] array_2 = array_1.clone();

この方法は、複雑な配列ではうまくいかない。
詳細はいずれまた紹介しよう。


お疲れ様でした。




© 2019 awasekagami