の配列 Java

⚡ スマートサマリー

の配列 Java これらは固定サイズのインデックスベースのコンテナであり、1つのデータ型の要素を連続したメモリに格納し、定数時間でのアクセス、組み込みの境界チェック、および長さフィールドを提供するため、ほとんどの標準ライブラリコレクションの基盤となっています。

  • 📦 固定サイズ: 配列は、単一型の要素を一定数保持する。
  • 🔢 ゼロベースのインデックス: 要素は0から長さマイナス1までの範囲をとります。
  • 🧩 2つのタイプ: Java 一次元配列と多次元配列を持つ。
  • 🛠️ XNUMX つのステップ: すべての配列は宣言され、構築されます。 new初期化されました。
  • 🛡️ 境界チェック: JVM がスローします ArrayIndexOutOfBoundsException 最後のスロットを過ぎた。
  • ↩️ 参照: メソッド内で行われた要素の変更は、呼び出し元にも反映されます。
  • 長さフィールド: すべての配列は length 安全な反復のために。

の配列 Java

とは Java 配列?

A Java 配列 は、連続したメモリに 1 つのデータ型の要素を格納する固定サイズの構造体です。各要素はゼロベースのインデックスでアクセスされるため、最初の要素は にあります。 0 そして最後は length - 1配列は以下を継承します Object 実装します Serializable (NAIST) と Cloneable、プリミティブ型またはオブジェクト参照を保持できます。

配列は、番号付き変数の長い羅列を置き換えるものです。6つの独立した整数を考えてみましょう。

x0 = 0;
x1 = 1;
x2 = 2;
x3 = 3;
x4 = 4;
x5 = 5;

同じ6つの値が、長さ6の単一の配列に格納されています。

x[0] = 0;
x[1] = 1;
x[2] = 2;
x[3] = 3;
x[4] = 4;
x[5] = 5;

A ループ 変数によって括弧内のインデックスを制御できるため、各要素を6回コピーする代わりに3行で処理できます。

for (int count = 0; count < 5; count++) {
    System.out.println(x[count]);
}

配列の種類 Java

Java 配列には2つの形状があります。

  1. 一次元配列: 要素のフラットなリスト。
  2. 多次元配列: 配列の配列。グリッドや行列に使用される。

配列変数:宣言、構築、初期化

配列を使うことは 3段階のプロセス: 宣言、構築 new次に初期化します。

1) 配列を宣言する

構文:

<elementType>[] <arrayName>;

or (旧式のCスタイル形式、現在も有効):

<elementType> <arrayName>[];

例:

int[] intArray;   // canonical form: brackets on the type
int intArray2[];  // legacy C-style form, discouraged in new code

2) 配列を構築する

構文:

arrayName = new dataType[size];

例:

intArray = new int[10]; // defines that intArray will store 10 integer values

宣言と建設を組み合わせたもの:

int[] intArray = new int[10];

3) 配列を初期化する

intArray[0] = 1; // assigns 1 to the first element (index 0)
intArray[1] = 2; // assigns 2 to the second element (index 1)

宣言と初期化を1ステップで実行 配列リテラルを使用する:

int[] intArray = {1, 2, 3, 4};
// initialises an integer array of length 4 where the first element is 1,
// the second element is 2, and so on.

最初の配列プログラム Java

ステップ1) 以下のコードをエディタにコピーしてください。

class ArrayDemo {
    public static void main(String args[]) {
        int array[] = new int[7];

        for (int count = 0; count < 7; count++) {
            array[count] = count + 1;
        }

        for (int count = 0; count < 7; count++) {
            System.out.println("array[" + count + "] = " + array[count]);
        }

        // System.out.println("Length of Array  =  " + array.length);
        // array[8] = 10;
    }
}

ステップ2) コードを保存、コンパイル、実行してください。出力結果を確認してください。

期待される出力:

array[0] = 1
array[1] = 2
array[2] = 3
array[3] = 4
array[4] = 5
array[5] = 6
array[6] = 7

ステップ3) If x 配列参照です。 x.length スロット数を返します。最初のコメントアウトされた行のコメントを解除して、再度実行してください。

Length of Array  =  7

ステップ4) Cとは異なり、 Java 配列へのアクセスごとに境界チェックを行います。2行目のコメントアウトを解除して再実行してください。

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 8
        at ArrayDemo.main(ArrayDemo.java:11)
Command exited with non-zero status 1

ステップ5) JVM がスローします ArrayIndexOutOfBoundsExceptionC言語では、同じアクセスでも失敗する代わりに、隣接するメモリからガベージが返される。

Java 配列: 参照渡し

配列は参照渡しでメソッドに渡されます。メソッドは参照のコピーを受け取るため、メソッド内で行われた要素の変更は呼び出し元から確認できます。

例:配列は参照渡しされます。

ステップ1) 以下のコードをエディタにコピーしてください。

class ArrayDemo {
    public static void passByReference(String a[]) {
        a[0] = "Changed";
    }

    public static void main(String args[]) {
        String[] b = {"Apple", "Mango", "Orange"};
        System.out.println("Before Function Call    " + b[0]);
        ArrayDemo.passByReference(b);
        System.out.println("After Function Call    " + b[0]);
    }
}

ステップ2) コードを保存、コンパイル、実行してください。出力結果を確認してください。

期待される出力:

Before Function Call    Apple
After Function Call    Changed

多次元配列 Java

多次元配列は配列の配列です。各次元ごとに角括弧を追加します。4行5列の2次元整数グリッドを作成するには、次のようにします。

int[][] twoD = new int[4][5];

最初にサイズを指定する必要があるのは最初の(左端の)寸法だけです。残りの寸法は個別に割り当てることができ、各行は独自の長さを持つことができるため、 Java 2次元配列は正しい ギザギザ配列.

例:

public class Guru99 {
    public static void main(String[] args) {
        // Create a 2-dimensional array with 4 rows and 4 columns.
        int[][] twoD = new int[4][4];

        // Assign three elements to it.
        twoD[0][0] = 1;
        twoD[1][1] = 2;
        twoD[3][2] = 3;

        System.out.print(twoD[0][0] + " ");
    }
}

期待される出力:

1

よくあるご質問

A Java 配列は、1つのデータ型の要素を格納する固定サイズのコンテナです。各要素には0から始まるインデックスでアクセスされ、すべての配列はスロット数を表す長さフィールドを公開します。

int[] arr で宣言し、new int[size] で構築し、インデックスで代入します。これら 3 つの操作を 1 行で行うには、int[] arr = {1, 2, 3, 4} のようなリテラルを使用します。

Java 一次元配列と多次元配列をサポートしています。一次元配列はフラットなリストであり、多次元配列は配列の配列で、テーブル、グリッド、行列などの作成に使用されます。

例えば、arr.length のように length フィールドを使用してください。これはスロット数を返し、あらゆる配列型で機能します。String とは異なり、配列は長さをメソッド呼び出しではなくフィールドとして公開します。

JVM はすべての配列アクセスに対して境界チェックを行います。インデックスがゼロ未満、または長さ以上になると ArrayIndexOutOfBoundsException がスローされ、C 言語や言語で問題となるメモリ破損バグが防止されます。 C++.

Java 引数は値渡しされますが、配列の場合は参照のコピーが渡されます。このメソッドは同じ基となる配列に対して動作するため、メソッド内での要素の変更は呼び出し元から確認できます。

機械学習によるコードアシスタントは、宣言・構築・初期化のパターンを認識し、リテラルやループを完成させます。また、実行時にArrayIndexOutOfBoundsExceptionをスローするような、よくあるオフバイワンエラーも検出します。

はい。GitHub Copilotは、平易な言葉で書かれたコメントから、配列宣言、ループ、Arrays.sort呼び出し、2次元行列走査などを自動生成します。 Rev本番データに対して実行する前に、生成された境界を確認してください。