【Java開発】第9回 多次元配列

#初めに

皆さん。こんにちは！

DreamHanksの254cmです。

今回は多次元配列について説明していきます。

Java記事のまとめは[こちら](https://qiita.com/DreamHanks/items/6b1996e1f8ed66bbd456)です。

前回の記事は[【Java開発】第8回 配列](https://qiita.com/DreamHanks/items/dc1118e293c6a6286d3a)です。

#多次元配列

今までの配列は一つの行で値を格納する「**一次元配列**」でした。

多次元配列は二次元配列以上で実装したものになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/708649/64c91e30-1122-2e02-dc74-75ed5e3d770d.png)
int型の一次元配列はいくつかのint型の変数が格納されているものであり、

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/708649/4b4769ef-4325-df9e-6cb7-b4fa70779fc9.png)
int[]型の二次元配列はいくつかのint[]型の一次元配列が格納されているものです。

つまり、N次元配列はN-1次元配列が格納されている配列です。
宣言
二次元の場合

```java
データ型[][] 配列変数名 = new データ型[要素数][要素数];
```

三次元の場合

```java
データ型[][][] 配列変数名 = new データ型[要素数][要素数][要素数];
```

初期化
二次元の場合

```java
データ型[][] 配列変数名 = {{要素,要素,要素,要素} , {要素,要素,要素,要素}};
```

三次元の場合

```java
データ型[][] 配列変数名 = {{{要素,要素,要素},{要素,要素,要素}},{{要素,要素,要素},{要素,要素,要素}},{{要素,要素,要素},{要素,要素,要素}}};
```
上記のように次元が増えても書き方の規則は同じようになります。

二次元配列を一つの行ごと初期化すると

```java
変数名[インデクス] = new int[] {要素,要素,要素,要素};
```

**サンプル**

```java
public class ArraySample {					
	public static void main(String[] args) {				
		int [][] arr1 = new int[2][3];			
		arr1[0] = new int[] {1,2,3};			
		arr1[1] = new int[] {4,5,6};			
					
		int [][] arr2 = {{1,2,3} , {4,5,6}};			
					
		int[][][] arr3 = new int [2][2][2];			
					
		arr3[0] = new int [][] {{1,2} ,{3,4}};			
		arr3[1] = new int [][] {{5,6} ,{7,8}};			
					
		int[][][] arr4 = {{{1,2} ,{3,4}},{{5,6} ,{7,8}}};			
					
		int[][] arr5 = new int [5][5];			
		for(int i = 0; i < arr5.length; i++) {			
			for(int j = 0; j < arr5[i].length; j++) {		
				arr5[i][j] = i+j;	
			}		
		}			
	}				
}							
```

```java
public class ArraySample {									
	public static void main(String[] args) {								
		int[][] arr = new int[5][5];							
		int i = 0;							
		int j = 0;							
									
		for(int[] array : arr) {							
			for(int value : array) {						
				arr[i][j] = 1;					
				j++;					
			}						
			i++;						
		}							
									
		for(int[] array : arr) {							
			for(int value : array) {						
				System.out.print(value);					
			}						
			System.out.println();						
		}							
	}								
}
```
int型の一次元配列はいくつかのint変数を出せます。
									
同じく二次元配列はいくつかの一次元配列を出せます。	
								
一次元配列で一つの要素は変数ですが、二次元配列で一つの要素は一次元配列です。
									
つまり、二次元配列で一つの変数を出したい場合には二次元配列の要素の要素を出す必要があります。	

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/708649/65b166d6-0359-8be5-a081-49086bdeea87.png)
上記のようにarr[0]配列のインデクス0番目の要素を出すために、arr[0][0]と書きました。

**サンプル**

```java
public class ArraySample {					
	public static void main (String[] args) {				
		int a[][] = new int [5][5];			
					
		for (int i=0; i<a.length; i++ ) {			
			for(int j=0;j<a[i].length;j++) {		
				if (i%2==0&&j%2==0) {	
					 a[i][j]= 1;
				}	
			}		
	    }				
					
		for(int [] arr : a) {			
			for(int value : arr) {		
				System.out.print(value +" ");	
			}		
			System.out.println();		
		}			
	}				
}					
```
#終わりに

今回の記事は以上になります。

次回はJavaの[ArrayList](https://qiita.com/DreamHanks/items/b9c2dcc06d1cbe8fe71f)を学びましょう。

私たちの最新の記事は[こちら](http://blog.dreamhanks.com/java%e5%85%a5%e9%96%80%e8%ac%9b%e5%ba%a7/)で確認することができます。

ご覧いただきありがとうございます。