Java 配列
配列は、あらゆるプログラミング言語にとって重要なデータ構造の一つです。もちろん、言語によって配列の実装や処理は異なります。
Java 言語で提供される配列は、固定サイズの同型要素を格納するために使用されます。
配列変数を宣言できます。たとえば、numbers
このチュートリアルでは、Java 配列の宣言、作成、初期化について説明し、対応するコードを示します。
配列変数の宣言
プログラムで配列を使用するには、まず配列変数を宣言する必要があります。以下は配列変数の宣言構文です:
注意:使用を推奨しますdataType[] arrayRefVarの宣言スタイルで配列変数を宣言します。dataType arrayRefVar[] スタイルは C/C++ 言語由来で、Java で採用されたのは C/C++ プログラマーが Java 言語をすばやく理解できるようにするためです。
例
以下はこの2つの構文のコード例です:
配列の作成
Java 言語では new 演算子を使用して配列を作成します。構文は次のとおりです:
arrayRefVar = new dataType[arraySize];
上記の構文ステートメントは2つのことを行います:
- 1. dataType[arraySize] を使用して配列を作成します。
- 2. 新しく作成した配列の参照を変数 arrayRefVar に代入します。
配列変数の宣言と配列の作成は、次のように1つのステートメントで完了できます:
dataType[] arrayRefVar = new dataType[arraySize];
また、次の方法で配列を作成することもできます。
dataType[] arrayRefVar = {value0, value1, ..., valuek};
配列の要素にはインデックスでアクセスします。配列のインデックスは 0 から始まるため、インデックス値は 0 から arrayRefVar.length-1 までです。
例
次のステートメントは、最初に配列変数 myList を宣言し、次に 10 個の double 型要素を含む配列を作成して、その参照を myList 変数に代入します。
TestArray.java ファイルコード:
上記の例の出力結果は次のとおりです:
总和为: 11367.373
次の図は配列 myList を示しています。ここで、myList 配列には 10 個の double 要素があり、その添字は 0 から 9 です。

配列の処理
配列の要素型と配列サイズは確定しているため、配列要素を処理するときは通常、基本ループまたは For-Each ループを使用します。
例
この例は、配列の作成、初期化、操作の方法を完全に示しています:
TestArray.java ファイルコード:
上記の例をコンパイルして実行した結果は次のとおりです:
1.9 2.9 3.4 3.5 Total is 11.7 Max is 3.5
For-Each ループ
JDK 1.5 では、For-Each ループまたは拡張 for ループと呼ばれる新しいループタイプが導入されました。これは添字を使用せずに配列を走査できます。
構文は次のとおりです:
for(type element: array)
{
System.out.println(element);
}
例
この例は、配列 myList のすべての要素を表示するために使用します:
TestArray.java ファイルコード:
上記の例をコンパイルして実行した結果は次のとおりです:
1.9 2.9 3.4 3.5
関数の引数としての配列
配列はメソッドに引数として渡すことができます。
たとえば、次の例は int 配列の要素を出力するメソッドです:
次の例では、printArray メソッドを呼び出して 3, 1, 2, 6, 4, 2 を出力します:
関数の戻り値としての配列
上記の例では、result 配列が関数の戻り値として使用されています。
多次元配列
多次元配列は配列の配列と見なすことができます。たとえば、2次元配列は特別な1次元配列であり、その各要素は1次元配列です。例:
多次元配列の動的初期化(2次元配列を例に)
1. 各次元に直接スペースを割り当てます。形式は次のとおりです:
type は基本データ型と複合データ型にできます。typeLength1 と typeLength2 は正の整数である必要があり、typeLength1 は行数、typeLength2 は列数です。
例:
解説:
2次元配列 a は、2行3列の配列と見なすことができます。
2. 最上位の次元から開始して、各次元にスペースを割り当てます。例:
解説:
s[0]=new String[2]とs[1]=new String[3]最上位の次元に参照スペースを割り当てます。つまり、最上位の次元がデータを保存できる最大長を制限し、次にその各配列要素に個別にスペースを割り当てます。s0=new String("Good")などの操作を行います。
多次元配列の参照(2次元配列を例に)
2次元配列の各要素への参照方法はarrayName[index1][index2]、例えば:
Arrays クラス
java.util.Arrays クラスは配列を簡単に操作でき、提供されるすべてのメソッドは静的です。
次の機能があります:
- 配列に値を代入:fill メソッドを使用。
- 配列のソート:sort メソッドを使用して昇順に並べ替え。
- 配列の比較:equals メソッドを使用して配列内の要素の値が等しいかどうかを比較。
- 配列要素の検索:binarySearch メソッドを使用して、ソート済みの配列に対して二分探索を行うことができます。
詳細は次の表を参照してください:
| 番号 | メソッドと説明 |
|---|---|
| 1 |
public static int binarySearch(Object[] a, Object key) 二分探索アルゴリズムを使用して、指定された配列内で指定された値のオブジェクト(Byte、Int、double など)を検索します。配列は呼び出し前にソートされている必要があります。検索値が配列に含まれている場合は検索キーのインデックスを返します。それ以外の場合は (-( を返します。挿入ポイント) - 1)。 |
| 2 |
public static boolean equals(long[] a, long[] a2) 指定された2つの long 型配列が互いに等しい場合、true を返します。2つの配列が同じ数の要素を含み、2つの配列内の対応するすべての要素ペアが等しい場合、これら2つの配列は等しいと見なされます。言い換えれば、2つの配列が同じ順序で同じ要素を含む場合、2つの配列は等しいです。同じメソッドが他のすべての基本データ型(Byte、short、Int など)にも適用されます。 |
| 3 |
public static void fill(int[] a, int val) 指定された int 値を、指定された int 型配列の指定された範囲内の各要素に割り当てます。同じメソッドが他のすべての基本データ型(Byte、short、Int など)にも適用されます。 |
| 4 |
public static void sort(Object[] a) 指定されたオブジェクト配列を、その要素の自然順序に従って昇順に並べ替えます。同じメソッドが他のすべての基本データ型(Byte、short、Int など)にも適用されます。 |
その他の拡張練習問題
Java 配列テスト