このシリーズは Java 配列から始まります。配列は同じ型のデータのグループを格納するためのデータ構造であり、インデックスを使用して配列内の要素にアクセスします。
- 配列の定義
- 配列の本質
- 配列のコピー
配列の定義#
配列の定義には主に 2 つの方法があります。1 つは配列のサイズを指定してから、配列要素のインデックスに基づいて値を割り当てる方法、もう 1 つは直接配列を作成して値を割り当てる方法です。具体的には以下の通りです:
//1.サイズが10の配列を定義
int[] arrayA = new int[10];
int arrayB[] = new int[10];
arrayA[0] = 1;
arrayB[1] = 2;
//2.配列を定義して値を割り当て
int[] arrayC = {1,2,3,4,5};
配列の本質#
Java の配列は実際にはクラスであるため、2 つの配列変数が同じ配列を指すことができます。以下のコードを観察してください:
int[] arrayD = {1,1,1};
int[] arrayE = arrayD;
arrayD[0] = 2;
System.out.println(arrayE[0]);
明らかに、上記のコードを実行した結果は 2 になります。上記のコードでは、配列 arrayD の値が arrayE に指されており、本質的には 2 つの配列 arrayD と arrayE が同じ配列空間を指しています。arrayD のある要素の値を変更すると、対応する arrayE の要素の値も変化します。具体的には以下の図のようになります:
注意:配列がメソッドの引数として渡されるとき、実際には配列の参照が渡されるため、メソッド内での配列の操作は元の配列にも影響を与えます。これは非常に重要です。
配列のコピー#
2 つの配列の要素がすべて同じ値になるようにするために、Java が提供する arraycopy () を使用できます。具体的には以下の通りです:
int[] arrayD = {1,1,1};
int[] arrayF = new int[3];
/配列をコピー
System.arraycopy(arrayD, 0, arrayF, 0, 3);
System.out.println(Arrays.toString(arrayF));
明らかに、上記のコードを実行すると配列 arrayF の値は 1、1、1 になります。もし配列 arrayD の要素の値を間接的に変更すると、配列 arrayF の値は 2、1、1 になります。これは文脈に基づいて得られた結果です。
次に、arraycopy メソッドのパラメータの意味について簡単に説明します。具体的には以下の通りです:
/**
* 配列をコピー
* @param src:元の配列
* @param srcPos:元の配列のコピーが始まる位置
* @param dest:目的の配列
* @param destPos:目的の配列の開始位置
* @param length:目的の配列の長さ
*/
public static void arraycopy(Object src,
int srcPos,
Object dest,
int destPos,
int length) {
}
配列に関して注意すべきことはこれくらいです。もちろん、配列を操作する他の API もありますが、上記のように配列間の値の割り当てが元の配列の値に影響を与えることに気づかなかったのは以前のことです。今日はこれだけ書きます。