JavaRush /Java Blog /Random-JA /Javaの配列

Javaの配列

Random-JA グループに公開済み
保管室にある細胞を想像してみてください。それぞれに独自の番号があり、それぞれに何らかの「荷物」オブジェクトが含まれています。または、すべての種類のワインに番号が付けられており、注文するときに飲み物の番号を伝えるだけで済むワインリストもあります。または、グループ内の生徒のリスト。最初のセルには生徒の「Andreev」が、最後のセルには「Yakovlev」が書き込まれます。または、飛行機の乗客のリスト。各乗客には特定の番号の座席が割り当てられます。Java では、同様の構造、つまり多数の同種のデータを操作するために、Java の配列がよく使用されます。

配列とは何ですか?

配列は、同じ型の要素を格納するデータ構造です。これは、番号が付けられた一連のセルと考えることができ、各セルには何らかのデータ (セルごとに 1 つのデータ要素) を含めることができます。特定のセルへのアクセスは、その番号によって実行されます。配列内の要素の番号は、インデックスとも呼ばれます。Java の場合、配列は同種です。つまり、すべてのセルに同じ型の要素が格納されます。したがって、整数の配列には整数 (たとえば、 int 型)のみが含まれ、文字列の配列には文字列のみが含まれ、作成したDogクラスの要素の配列にはDogオブジェクトのみが含まれます。つまり、Java では、配列の最初のセルに整数を、 2 番目のセルにString を、3 番目のセルに「犬」を入れることはできません。 Javaの配列

配列宣言

配列を宣言するにはどうすればよいですか?

他の変数と同様に、Java の配列も宣言する必要があります。これは 2 つの方法のいずれかで実行できます。これらは同等ですが、最初の方が Java スタイルとの一貫性が高くなります。2 つ目は C 言語の遺産です (多くの C プログラマーは Java に切り替えましたが、利便性のために代替メソッドが残されました)。この表は、Java で配列を宣言する両方の方法を示しています。
いいえ。 配列宣言、Java 構文 コメント
1.
dataType[] arrayName;
int[] myArray;

Object[]
arrayOfObjects;
この方法で配列を宣言することをお勧めします。これは Java スタイルです。
2.
dataType arrayName[];
int myArray[];

Object
arrayOfObjects[];
Java でも機能する、C/C++ から配列を宣言する継承された方法
どちらの場合も、dataType は配列内の変数の型です。例では 2 つの配列を宣言しました。1 つはint型の整数を格納し、もう 1 つはObject型のオブジェクトを格納します。したがって、配列が宣言されると、名前と型 (配列変数の型) が決まります。arrayNameは配列の名前です。

配列の作成

配列を作成するにはどうすればよいですか?

他のオブジェクトと同様に、 new演算子を使用して Java 配列を作成、つまりその配列用のメモリ領域を予約できます。これは次のように行われます。
new typeOfArray [length];
ここで、typeOfArrayは配列の型、lengthはその長さ (つまり、セルの数) で、整数 ( int ) で表されます。ただし、ここでは配列にメモリを割り当てただけで、作成した配列を以前に宣言した変数に関連付けていません。通常、配列は最初に宣言されてから作成されます。次に例を示します。
int[] myArray; // array declaration
myArray = new int[10]; // creation, that is, allocation of memory for an array of 10 elements of type int
ここでは、 myArray という整数の配列を宣言し、それが 10 個のセル (各セルに整数が格納される) で構成されることを宣言しました。ただし、次の簡略構文を使用して宣言の直後に配列を作成する方がはるかに一般的です。
int[] myArray = new int[10]; // declaration and allocation of memory "in one bottle"
注記:newを使用して配列を作成した後、そのセルにはデフォルト値が入力されます。(この例のように) 数値型の場合は 0、ブール型の場合はfalse、参照型の場合はnullになります。ということで、手術後は
int[] myArray = new int[10];
10 個の整数の配列を取得します。これがプログラム中に変更されるまで、各セルには 0 が含まれます。

配列の詳細については、「配列について」の記事を参照してください。

Javaの配列の長さ

上で述べたように、配列の長さは配列が設計された要素の数です。配列の長さは、作成後に変更することはできません。 注記:Java では、配列要素には 0 から始まる番号が付けられます。つまり、10 個の要素からなる配列がある場合、配列の最初の要素のインデックスは 0 になり、最後の要素のインデックスは 9 になります。 長さJava の配列 - 3変数を使用して配列の長さにアクセスできます。例:
int[] myArray = new int[10]; // created an array of integers with 10 elements and named it myArray
System.out.println(myArray.length); // printed to the console the length of the array, that is, the number of elements that we can put in the array
プログラム出力:
10

配列の初期化とその要素へのアクセス

Java で配列を作成する方法はすでに明らかです。この手順を実行すると、空の配列ではなく、デフォルト値が入力された配列が得られます。たとえば、 intの場合、これらは 0 になり、参照型のデータを含む配列がある場合、デフォルトで各セルにnullが書き込まれます。インデックスによって配列要素にアクセスします (つまり、値を書き込むか、画面に表示するか、何らかの操作を実行します)。配列の初期化とは、配列に特定のデータを入力することです (デフォルトではありません)。 例: 4 つの季節の配列を作成し、文字列値 (これらの季節の名前) を入力してみましょう。
String[] seasons  = new String[4]; /* declared and created an array. Java allocated memory for an array of 4 strings, and now each cell is null (because the string is a reference type)*/

seasons[0] = "Winter"; /* in the first cell, that is, in the cell with a zero number, we wrote the string Winter. Here we get access to the zero element of the array and write a specific value there */
seasons[1] = "Spring"; // do the same procedure with cell number 1 (second)
seasons[2] = "Summer"; // ...number 2
seasons[3] = "Autumn"; // and with the last one, number 3
これで、配列の 4 つのセルすべてに季節の名前が含まれます。初期化は、初期化と宣言を組み合わせて、別の方法で実行することもできます。
String[] seasons  = new String[] {"Winter", "Spring", "Summer", "Autumn"};
さらに、new演算子は省略できます。
String[] seasons  = {"Winter", "Spring", "Summer", "Autumn"};

Javaで配列を画面上に表示するにはどうすればよいですか?

たとえば、 forループを使用して、配列要素を画面 (つまり、コンソール) に表示できます。画面上に配列を表示する別の短い方法については、以下の「配列を操作するための便利な方法」の段落で説明します。ここでは、配列の循環出力の例を見てみましょう。
String[] seasons  = new String[] {"Winter", "Spring", "Summer", "Autumn"};
for (int i = 0; i < 4; i++) {
System.out.println(seasons[i]);
}
その結果、プログラムは次の結果を出力します。
冬春夏秋

1次元および多次元のJava配列

数値の配列、文字列の配列、オブジェクトの配列ではなく、配列の配列を作成したい場合はどうすればよいでしょうか? Java を使用するとこれが可能になります。すでにおなじみの配列int[] myArray = new int[8] は、いわゆる 1 次元配列です。また、配列の配列は 2 次元と呼ばれます。これは、行番号と列番号を持つテーブルのようなものです。あるいは、線形代数の基礎を行列で学んだ場合。 Java の配列 - 4なぜそのような配列が必要なのでしょうか? 特に、同じ行列とテーブル、およびそれらに構造が似ているオブジェクトをプログラミングする場合に適しています。たとえば、チェスの競技場は 8x8 配列として指定できます。多次元配列は次のように宣言および作成されます。
int[][] myTwoDimentionalArray = new int [8][8];
myTwoDimentionalArray[0][0]この配列には、 、myTwoDimentionalArray[0][1]myTwoDimentionalArray[1][0]など、myTwoDimentionalArray[1][1]までの 要素がちょうど 64 個ありますmyTwoDimentionalArray[7][7]。したがって、これをチェス盤を表すために使用すると、セル A1 は を表しmyTwoDimentionalArray[0][0]、E2 は を表しますmyTwoDimentionalArray[4][1]。2つあるところには3つあります。Java では、配列の配列、配列の配列の配列などを指定できます。真の 3 次元以上の配列が使用されることはほとんどありません。ただし、3 次元配列を使用すると、たとえばルービック キューブをプログラムできます。

他に何を読むべきか

多次元配列

配列を操作するための便利なメソッド

Java で配列を操作するには、 java.util.Arraysクラスがあります(配列は英語で「配列」を意味します)。一般に、要素の入力 (初期化)、要素の取得 (数値による)、並べ替え、検索といった操作が配列で最も頻繁に実行されます。配列の検索と並べ替えは別のトピックです。一方で、いくつかの検索および並べ替えアルゴリズムを自分で練習して作成することは非常に役立ちます。一方、すべてのベスト プラクティスはすでに作成され、Java ライブラリに組み込まれており、合法的に使用できます。 このクラスの便利なメソッドを 3 つ紹介します

配列をソートする

このメソッドは、void sort(int[] myArray, int fromIndex, int toIndex)整数の配列またはその部分配列を昇順に並べ替えます。

配列内で目的の要素を検索する

int binarySearch(int[] myArray, int fromIndex, int toIndex, int key)。このメソッドは、すでにソート済みのmyArrayまたはサブ配列内のキー要素を、 fromIndexから開始してtoIndexまで検索します。要素が見つかった場合、メソッドはそのインデックスを返します。そうでない場合は、 - を返します。 (-fromIndex)-1

配列を文字列に変換する

このメソッドはString toString(int[] myArray)配列を文字列に変換します。問題は、Java 配列ではtoString()をオーバーライドしないということです。これは、配列全体を (「配列を画面に出力する」のように要素ごとではなく) 画面に直接表示しようとすると ( System.out.println(myArray))、配列のクラス名と 16 進数のハッシュ コードを取得することを意味します。 (これはObject.toString()によって定義されます)。初心者の方はやり方の説明が分からないかもしれませんtoString。最初の段階ではこれは必要ありませんが、この方法を使用すると配列の出力が簡素化されます。Java を使用すると、ループを使用せずに配列を簡単に表示できます。これについては、以下の例で詳しく説明します。

sort、binarySearch、toString の例

整数の配列を作成し、toStringを使用して画面に表示し、 sortメソッドを使用して並べ替えて、その中の数値を見つけてみましょう。
class Main {
    public static void main(String[] args) {
        int[] array = {1, 5, 4, 3, 7}; //declaring and initializing the array
        System.out.println(array);//trying to display our array on the screen without the toString method - we get a hexadecimal number
        System.out.println(Arrays.toString(array));//печатаем массив "правильно"
        Arrays.sort(array, 0, 4); // sort the entire array from zero to the fourth member
        System.out.println(Arrays.toString(array));//print the sorted array to the screen
        int key = Arrays.binarySearch(array, 5); // ищем key - число 5 в отсортированном массиве.
        //binarySearch method will return the index of the sorted array element, in which the required number is "hidden"
        System.out.println(key);//распечатываем индекс искомого числа
System.out.println(Arrays.binarySearch(array, 0));//а теперь попробуем найти число, которого в массиве нет,
        // and immediately display the result on the screen

    }
}
プログラム出力:
[I@1540e19d [1, 5, 4, 3, 7] [1, 3, 4, 5, 7] 3 -1
最初の行はtoString を使用せずに配列を表示しようとしています、2 行目はtoStringを使用して配列を表示しています、3 行目はソートされた配列、4 行目はソートされた配列内の目的の数値 5 のインデックスです (次から数えていることに注意してください)ゼロなので、配列の 4 番目の要素のインデックスは 3) になります。5 行目には、値-1が表示されます。配列にはそのようなインデックスはありません。出力は、目的の要素 (この場合は 0) が配列内にないことを示します。

Array クラスのメソッドの詳細

Arrays クラスとその使用法 - この記事では Array クラスのいくつかのメソッドについて説明します

配列に関する重要な点

  • 配列の主な特徴: 配列に配置されるデータのタイプ、名前、長さ。
    後者は初期化 (配列にメモリを割り当てる) 中に決定され、最初の 2 つのパラメーターは配列の宣言時に決定されます。

  • 配列サイズ(セル数)はintで定義する必要があります。

  • 配列の作成後に長さを変更することはできません。

  • 配列要素にはインデックスによってアクセスできます。

  • 配列では、Java の他の部分と同様に、要素には 0 から始まる番号が付けられます。

  • 配列の作成手順が完了すると、配列にはデフォルト値が設定されます。

  • Java の配列は C++ とは構造が異なります。これらは動的配列へのポインタとほぼ同じです。

配列に関する役立つ資料

配列についてもっと知りたいですか? ぜひ以下の記事もご覧ください。このトピックに関しては、興味深く役立つ情報がたくさんあります。
  1. 配列に関するもの- 配列に関する優れた詳細な記事

  2. Arrays クラスとその使用法 - この記事ではArrayクラスのいくつかのメソッドについて説明します

  3. 多次元配列- 例を含む多次元配列に関する詳細な記事。

  4. null ではなく長さ 0 の配列を返す - 『Effective Programming』著者の Joshua Bloch が空の配列をより適切に返す方法について語ります

コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION