4.3 java多次元配列
2496 ワード
一、学習要求
書籍参考章節:第3.10章節
学習目標:多次元配列の基本概念 を把握する多次元配列の定義と初期化 多次元配列の動作 二、参考知識
前の記事では,配列の概念と一次元配列を紹介した.この章では、多次元配列について説明します.多次元配列とは、1次元配列に対して、実際には配列の配列である.
簡単な例
例として、2 D整数配列を作成します.
上に2 D配列が作成されています.2行3列のマトリクスに相当し、6要素です.ここでa[0],a[1]自体は1次元整数配列であり,これを理解すると多次元配列の操作が容易になる.たとえば、配列全体を巡回します.
あるいはfor-eachで
多次元配列変数の宣言
上記の例では,多次元配列変数の宣言を見た.1次元配列との違いは,数次元で数対の[]記号があり,[]記号のように変数名の左側または右側に任意に位置できることである.次のように、合法的な2 D配列宣言です.
上の3番目の例は合法ですが、このように書くのはお勧めしません.一般的には、変数の前に[]を置くことをお勧めします.
多次元配列オブジェクトの作成
上記は、a[0],a[1]の値が3つの要素を含む1次元配列である2行3列の行列に相当する.しかし、1次元配列とは異なり、次の文は正当です.
上記の文は2次元配列を作成し、a[0]、a[1]の内容はnullである.同じ理屈で、
上の構文も合法的で、空の2次元配列が作成されていることを示しています.
多次元配列要素の参照
多次元配列における要素の参照(設定値および取得を含む)は、複数の下付き文字によって操作される.上のコードのように、a[0][0]はa[0]の配列をとる1番目の要素を表し、a[1][2]はa[1]の配列の3番目の要素を表す.a[0]およびa[1]はいずれも1次元整数配列を指すからである.
初期化による直接多次元配列の作成
上の文は実際に2次元配列を作成し、2*3のマトリクスです.ここで、a[0]の値は1次元配列{1,2,3}に対応し、a[1]の値は1次元配列{4,5,6}に対応する.もう1つの例を見てみましょう
このコードは少し変に見えますが、実際には正しいです.a[0][2]で要素を取得すると、実行時にArrayIndexOutOfBoundsException異常が報告されます.理由はやはり前の説明で、多次元配列は本質的に配列の配列であり、実際には後次元の配列の要素個数が同じであることを要求していない.例えばこの例では、実際にa配列には3つの要素があり、1つ目の要素は長さ2の1次元整数配列であり、ここではa[0][2]を通じて明らかに境界を越えている.2番目の要素は長さ3の1次元整数配列であり、明らかにa[1][2]が取った値は6である.3番目の要素は、長さが1の1次元整数配列です.この例から,2次元配列は本当に1つの行列に対応しているわけではないことがわかる.ただし、通常newオペレータによって作成される2次元配列は、マトリクスのデータを格納することができます.
小結
本論文では,二次元配列を例に多次元配列を紹介した.多次元配列の場合、覚えておくべきは配列の配列です.たとえば、2 D配列は、その1 Dの各要素の値も配列であり、各要素に対応する配列の長さは一致する必要はありません.
書籍参考章節:第3.10章節
学習目標:
前の記事では,配列の概念と一次元配列を紹介した.この章では、多次元配列について説明します.多次元配列とは、1次元配列に対して、実際には配列の配列である.
簡単な例
例として、2 D整数配列を作成します.
int[][] a = new int[2][3];
上に2 D配列が作成されています.2行3列のマトリクスに相当し、6要素です.ここでa[0],a[1]自体は1次元整数配列であり,これを理解すると多次元配列の操作が容易になる.たとえば、配列全体を巡回します.
public void show(){
int[][] a = new int[2][3];
System.out.println(a.length); // 2
System.out.println(a[1].length); // 3
for(int i=0;i<2;i++)
for(int j=0;j<3;j++)
System.out.println(a[i][j]);
}
あるいはfor-eachで
public void show(){
int[][] a = new int[2][3];
for(int[] arr:a)
for(int value:arr)
System.out.println(value);
}
多次元配列変数の宣言
上記の例では,多次元配列変数の宣言を見た.1次元配列との違いは,数次元で数対の[]記号があり,[]記号のように変数名の左側または右側に任意に位置できることである.次のように、合法的な2 D配列宣言です.
int[][] a;
int a[][];
int[] a[];
上の3番目の例は合法ですが、このように書くのはお勧めしません.一般的には、変数の前に[]を置くことをお勧めします.
多次元配列オブジェクトの作成
, , :
int[][] a = new int[2][3];
上記は、a[0],a[1]の値が3つの要素を含む1次元配列である2行3列の行列に相当する.しかし、1次元配列とは異なり、次の文は正当です.
int[][] a = new int[2][];
上記の文は2次元配列を作成し、a[0]、a[1]の内容はnullである.同じ理屈で、
int[][] a = new int[0][];
上の構文も合法的で、空の2次元配列が作成されていることを示しています.
多次元配列要素の参照
多次元配列における要素の参照(設定値および取得を含む)は、複数の下付き文字によって操作される.上のコードのように、a[0][0]はa[0]の配列をとる1番目の要素を表し、a[1][2]はa[1]の配列の3番目の要素を表す.a[0]およびa[1]はいずれも1次元整数配列を指すからである.
初期化による直接多次元配列の作成
, , new 。 :
int[][] a = {{1,2,3},{4,5,6}};
上の文は実際に2次元配列を作成し、2*3のマトリクスです.ここで、a[0]の値は1次元配列{1,2,3}に対応し、a[1]の値は1次元配列{4,5,6}に対応する.もう1つの例を見てみましょう
int[][] a = {{1,2},{4,5,6},{9}};
このコードは少し変に見えますが、実際には正しいです.a[0][2]で要素を取得すると、実行時にArrayIndexOutOfBoundsException異常が報告されます.理由はやはり前の説明で、多次元配列は本質的に配列の配列であり、実際には後次元の配列の要素個数が同じであることを要求していない.例えばこの例では、実際にa配列には3つの要素があり、1つ目の要素は長さ2の1次元整数配列であり、ここではa[0][2]を通じて明らかに境界を越えている.2番目の要素は長さ3の1次元整数配列であり、明らかにa[1][2]が取った値は6である.3番目の要素は、長さが1の1次元整数配列です.この例から,2次元配列は本当に1つの行列に対応しているわけではないことがわかる.ただし、通常newオペレータによって作成される2次元配列は、マトリクスのデータを格納することができます.
小結
本論文では,二次元配列を例に多次元配列を紹介した.多次元配列の場合、覚えておくべきは配列の配列です.たとえば、2 D配列は、その1 Dの各要素の値も配列であり、各要素に対応する配列の長さは一致する必要はありません.