1概要

このクイックチュートリアルでは、配列を初期化するためのさまざまな方法と、それらの間の微妙な違いについて説明します。


2一度に1つの要素

単純なループベースの方法から始めましょう。

for (int i = 0; i < array.length; i++) {
    array[i]= i + 2;
}

また、多次元配列を一度に1要素ずつ初期化する方法も見てみましょう。

for (int i = 0; i < 2; i++) {
    for (int j = 0; j < 5; j++) {
        array[i][j]= j + 1;
    }
}


3宣言時

宣言時に配列を初期化しましょう。

String array[]= new String[]{
  "Toyota", "Mercedes", "BMW", "Volkswagen", "Skoda" };

配列をインスタンス化している間、その型を指定する必要はありません。

int array[]= { 1, 2, 3, 4, 5 };

この方法では、宣言後に配列を初期化することはできません。実行しようとすると、コンパイルエラーが発生します。


4

Arrays.fill()


を使う


java.util.Arrays

クラスには、

fill()

という名前のメソッドがいくつかあります。これらのメソッドは、異なる種類の引数を受け入れ、配列全体を同じ値で埋めます。

long array[]= new long[5];
Arrays.fill(array, 30);

このメソッドには、配列の範囲を特定の値に設定するいくつかの選択肢もあります。

int array[]= new int[5];
Arrays.fill(array, 0, 3, -50);

このメソッドは、配列、最初の要素のインデックス、要素数、および値を受け入れます。


5

Arrays.copyOf()


を使う

メソッド

Arrays.copyOf()

は、別の配列をコピーして新しい配列を作成します。このメソッドには、さまざまな種類の引数を受け入れる多数のオーバーロードがあります。

簡単な例を見てみましょう。

int array[]= { 1, 2, 3, 4, 5 };
int[]copy = Arrays.copyOf(array, 5);

ここでいくつかのメモ:

  • このメソッドは、コピー元の配列とコピーの長さを受け取ります。

作成した
** 長さがコピーする配列の長さより大きい場合、

それから余分な要素はそれらのデフォルト値を使って初期化されます
** ソース配列が初期化されていなければ、


NullPointerException

がスローされる
** ソース配列の長さが負の場合、


NegativeArraySizeException

がスローされる


6.

Arrays.setAll()


を使う

メソッド

Arrays.setAll()

は、生成関数を使用して配列のすべての要素を設定します。

int[]array = new int[20];
Arrays.setAll(array, p -> p > 9 ? 0 : p);
//[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]----

ジェネレータ関数がnullの場合、__NullPointerException__がスローされます。

===  **  7.  __ArrayUtils.clone()__ ** を使用する

最後に、Apache Commons Lang 3の__ArrayUtils.clone()__ APIを使用しましょう。これは、別の配列の直接コピーを作成することによって配列を初期化します。

[source,java,gutter:,true]

char[]array = new char[]{‘a’, ‘b’, ‘c’};
char[]copy = ArrayUtils.clone(array);

このメソッドはすべてのプリミティブ型に対してオーバーロードされていることに注意してください。

===  **  8結論**

この記事では、Javaで配列を初期化するさまざまな方法について説明しました。

いつものように、コードのフルバージョンはhttps://github.com/eugenp/tutorials/tree/master/core-java-arrays[over on GitHub]から入手可能です。