シリーズ記事ディレクトリ
【Javaの基礎】StringBuffer、StringBuilderクラスのアプリケーションとソースコード解析
【Javaの基礎】配列アプリケーションとソースコードの解析
【Javaの基礎】文字列、メモリアドレス、ソースコードの解析
記事ディレクトリ
序文
配列はあらゆるプログラミング言語にとって重要なデータ構造の 1 つであり、当然のことながら、言語が異なれば配列の実装や処理も異なります。
Java 言語で提供される配列は、同じ型の要素を固定サイズで格納するために使用されます。
100 個の独立変数 (number0、number1、...、number99) を直接宣言する代わりに、numbers[100] などの配列変数を宣言できます。
このチュートリアルでは、Java 配列の宣言、作成、初期化を紹介し、対応するコードを示します。
1. 配列変数を宣言する
配列変数をプログラムで使用するには、まず配列変数を宣言する必要があります。配列変数を宣言するための構文は次のとおりです。
dataType[] arrayRefVar; // 首选的方法
或
dataType arrayRefVar[]; // 效果相同,但不是首选方法
注: 配列変数を宣言するには、dataType[] arrayRefVar の宣言スタイルを使用することをお勧めします。dataType arrayRefVar[] スタイルは C/C++ 言語に由来しており、C/C++ プログラマーが Java 言語をすぐに理解できるように Java で採用されています。
両方の構文のコード例を次に示します。
double[] myList; // 首选的方法
或
double myList[]; // 效果相同,但不是首选方法
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 を宣言し、次に double 型の 10 個の要素を含む配列を作成し、その参照を myList 変数に割り当てます。
public class TestArray {
public static void main(String[] args) {
// 数组大小
int size = 10;
// 定义数组
double[] myList = new double[size];
myList[0] = 1.2;
myList[1] = 2.3;
myList[2] = 3.4;
myList[3] = 4.5;
myList[4] = 5.6;
myList[5] = 6.7;
myList[6] = 7.8;
myList[7] = 8.9;
myList[8] = 99.10;
myList[9] = 10000;
System.out.println("数组: " + Arrays.toString(myList));
}
}
上記の例の出力は次のとおりです。
配列: [1.2、2.3、3.4、4.5、5.6、6.7、7.8、8.9、99.1、10000.0]
3. For-Each ループで、配列内のデータを出力します。
このインスタンスは、配列 myList 内のすべての要素を表示するために使用されます。
public class TestArray {
public static void main(String[] args) {
double[] myList = {
1.9, 2.9, 3.4, 3.5};
// 打印所有数组元素
for (double element: myList) {
System.out.println(element);
}
}
}
4. 配列ツールクラス
java.util.Arrays クラスは配列の操作を容易にし、それによって提供されるすべてのメソッドは静的です。
次の機能があります。
- 配列への代入: fill メソッドによる。
- 配列をソートします。sort メソッドを使用して昇順に並べます。
- 配列の比較: 配列内の要素の値が等しいかどうかを比較するには、equals メソッドを使用します。
- 配列要素の検索: binarySearch メソッドを使用して、ソートされた配列に対して二分検索操作を実行できます。
シリアルナンバー | 方法と指示 |
---|---|
1 | public static int binarySearch(Object[] a, Object key) は、 バイナリ検索アルゴリズムを使用して、指定された配列内の指定された値のオブジェクト (Byte、Int、double など) を検索します。配列は呼び出す前にソートする必要があります。ルックアップ値が配列に含まれている場合は検索キーのインデックスを返し、それ以外の場合は (-(挿入ポイント) - 1) を返します。 |
2 | public static booleanquals(long[] a, long[] a2) 指定された 2 つの long 配列が互いに等しい場合、true を返します。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 など) にも機能します。 |
このインスタンスは、配列 myList をソートするために使用されます。
public class TestArray {
public static void main(String[] args) {
double[] myList = {
5.2, 1.9, 1.7, 4.4, 3.5};
// 打印所有数组元素 - 排序前
for (double element: myList) {
System.out.println(element);
}
System.out.println("-----------------");
Arrays.sort(myList);
// 打印所有数组元素 - 排序后
for (double element: myList) {
System.out.println(element);
}
}
}
5. 配列演算
配列の追加、削除、クエリ、変更操作
public static void main(String[] args) {
// 数组大小
int size = 10;
// 定义数组
Integer[] myList = new Integer[size];
//增加数据
for (int i = 0; i < size; i++) {
myList[i] = new Random().nextInt(100);
}
System.out.println("数组: " + Arrays.toString(myList));
System.out.println("数组数据长度: " + myList.length );
System.out.println("--------------------------------");
//删除数据
myList[8] = null;
System.out.println("数组: " + Arrays.toString(myList));
System.out.println("数组数据长度: " + myList.length );
System.out.println("--------------------------------");
//修改数据
myList[8] = 100;
System.out.println("数组: " + Arrays.toString(myList));
System.out.println("数组数据长度: " + myList.length );
System.out.println("--------------------------------");
}