[備忘録 その４] Java Silver ～変数と配列 その２～

# 配列
配列は、同じデータ型の要素を一定の順番で並べたデータ構造です。プログラミングにおいて、複数のデータを効率的に扱うために広く使われています。配列を使うことで、データの集まりを一つの変数で管理し、インデックスを用いて個々の要素にアクセスできます。
## 配列の基本
* 固定長：配列の長さは一度作成されると変更できません。要素数を変更したい場合は新しい配列を作成し直す必要があります・
* 同じデータ型：配列に格納されるすべての要素は同じデータ型である必要があります。
* インデックスによるアクセス：配列の要素にはインデックス(番号)を使ってアクセスします。インデックスは0から始まります。

## 配列のメリット
* 簡単なデータ管理：複数の同種のデータを一つの変数で管理できるため、コードが簡潔になります。
* 効率的なアクセス：インデックスを使って特定の要素に直接アクセスできるため、効率的です。

## 配列のデメリット
* 固定長：配列の長さは変更できないため、要素数が事前にわからない場合は不便です。
* メモリの無駄：必要な要素数より大きな配列を作成するとメモリの無駄が生じます。

## 配列の宣言と初期化
### 1\.宣言と初期化を別々に行う
```java
int[] array; // 配列の宣言
array = new int[5]; // 配列の初期化（長さ5の整数型配列）
```
### 2\.宣言と初期化を同時に行う
```java
int[] array = new int[5]; // 長さ5の整数型配列を作成
```
### 3\.初期値を指定して初期化する
```java
int[] array = {1, 2, 3, 4, 5}; // 初期値を持つ配列
```
### 配列の要素へのアクセス
配列の要素にアクセスするには、インデックスを使用します。インデックスは0から始まり、配列の長さ-1までの値をとります。

### 要素の代入
```java
array[0] = 10; // 最初の要素に10を代入
```

### 要素の取得
```java
int value = array[0]; // 最初の要素の値を取得
```

## 配列の長さの取得
配列の長さは'length'プロパティを使って取得できます。
```java
int length = array.length; // 配列の長さを取得
```

## 配列の例
```java
public class ArrayExample {
    public static void main(String[] args) {
        // 配列の宣言と初期化
        int[] numbers = new int[5];

        // 配列の要素に値を代入
        numbers[0] = 10;
        numbers[1] = 20;
        numbers[2] = 30;
        numbers[3] = 40;
        numbers[4] = 50;

        // 配列の要素を出力
        for (int i = 0; i < numbers.length; i++) {
            System.out.println("numbers[" + i + "] = " + numbers[i]);
        }

        // 初期値を指定して配列を宣言・初期化
        int[] predefinedNumbers = {1, 2, 3, 4, 5};

        // 拡張forループを使って配列の要素を出力
        for (int number : predefinedNumbers) {
            System.out.println(number);
        }
    }
}
```

## 多次元配列
多次元配列は、配列の配列を扱うデータ構造で、2次元以上の配列を持つことができます。多次元配列を使用すると、データを行列やテーブルのような形式で表現できます。Javaでは、特に2次元配列が一般的ですが、3次元以上の配列も扱えます。
### 2次元配列
2次元配列は、行と列えを持つ配列の配列です。例えば、行列を表現するのに使われます。

#### 宣言と初期化
##### 1\. 宣言と初期化を別々に行う：
```java
int[][] array;  // 2次元配列の宣言
array = new int[3][4];  // 3行4列の2次元配列の初期化
```
##### 2\. 宣言と初期化を同時に行う:
```java
int[][] array = new int[3][4];  // 3行4列の2次元配列の宣言と初期化
```
##### 3\. 初期値を指定して初期化する:
```java
int[][] array = {
    {1, 2, 3, 4},
    {5, 6, 7, 8},
    {9, 10, 11, 12}
};
```

##### 要素へのアクセス
2次元配列の要素にアクセスするには、行と列のインデックスを指定します。
```java
int value = array[1][2];  // 2行目（インデックス1）の3列目（インデックス2）の値を取得
array[0][0] = 10;  // 1行目（インデックス0）の1列目（インデックス0）の値を10に設定
```
##### 例
```java
public class TwoDimensionalArrayExample {
    public static void main(String[] args) {
        // 2次元配列の宣言と初期化
        int[][] matrix = {
            {1, 2, 3},
            {4, 5, 6},
            {7, 8, 9}
        };

        // 2次元配列の要素を出力
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[i].length; j++) {
                System.out.print(matrix[i][j] + " ");
            }
            System.out.println();
        }
    }
}
```

最初のページ
[[備忘録 その１] Java Silver ～Javaプログラミング基礎～](https://qiita.com/MagicShowTime/items/9fcf3a2cb4a7162aafcf "[備忘録 その１] Java Silver ～Javaプログラミング基礎～")

前のページ
[[備忘録 その３] Java Silver ～変数と配列 その１～](https://qiita.com/MagicShowTime/items/3d73ca92d28bc4236bd5 "[備忘録 その３] Java Silver ～変数と配列 その１～")

次のページ
[[備忘録 その５] Java Silver ～演算子～](https://qiita.com/MagicShowTime/items/801fbb1a542cb9e1a317 "[備忘録 その５] Java Silver ～演算子～")