Javaの配列はプログラミングの基本中の基本であり、データを効率的に管理するために不可欠な概念となります。
この記事では、Javaにおける配列の基本から応用まで初心者向けにわかりやすく解説していきます。
配列の宣言、初期化、要素の追加や操作方法、実際のプログラミングでの活用例まで、基本の「き」から応用技術までを網羅的に紹介します。
また、配列操作で遭遇する可能性のある一般的なエラーとその対処法についても解説していますので、ぜひ参考にしてみてください。
2014年 大学在学中にソフトウェア開発企業を設立
2016年 新卒でリクルートに入社 SUUMOの開発担当
2017年 開発会社Jiteraを設立
開発AIエージェント「JITERA」を開発
2024年 「Forbes 30 Under 30 Asia 2024」に選出
アプリ・システム開発は生成AIを活用することで、従来の開発ではあり得なかった、低コスト・高品質開発・スピード開発が同時に実現できます。
▼従来の開発とAIを使った開発の違い
システムソリューションを得意とし、新規事業からDX推進まで幅広いジャンルの開発実績があります。
Java配列の基本概念
Javaにおける配列は、同一型の複数のデータを一つの変数名で管理するためのデータ構造で、これによってデータの集合を効率的に扱うことが可能になります。
配列を使用することで大量のデータも簡単に扱えますし、ループ処理と組み合わせることでデータの操作や処理を柔軟に行うことができます。
ここでは、Javaにおける配列の基本的な概念と宣言方法について解説していきます。
Javaにおける配列とは
Javaでの配列は固定長のデータ構造であり、一度定義するとそのサイズを変更することはできません。
配列の各要素は同じデータ型を持ち、0から始まるインデックスによってアクセスされます。
例えば10個の整数を格納する配列を作成した場合、これらの整数は0から9までのインデックスを使ってアクセスすることができます。
配列の使用例としては、学生の成績リスト、商品の価格リスト、温度データの集合などが挙げられます。
配列を使用することでこれらのデータを一つの変数名で管理し、繰り返し処理や検索、ソートなどの操作を効率的に行うことが可能になります。
配列の宣言方法
Javaで配列を宣言するには、データ型に続けて[]を記述して配列変数名を指定します。
例えば、整数型の配列を宣言する場合はint[] myArray;
のように記述します。
配列を宣言した後、new
キーワードを使用して実際に配列を生成して配列のサイズを指定する必要があります。
myArray = new int[10];
上記のコードは、10個の整数を格納できる配列を生成して
myArray
に割り当てます。
初心者が注意すべきポイントは、配列のインデックスが0から始まることと配列のサイズが固定であるため、宣言時にサイズを慎重に決定する必要があることです。
また、配列の宣言と同時に初期化を行うことも可能で、int[] myArray = {1, 2, 3, 4, 5};
のように記述することで、特定の値で配列を初期化できます。
Java配列の初期化と要素数の管理
Javaでの配列操作はデータの集合を効率的に扱う基本的な方法の一つで、配列の初期化は配列を使用する前に必要なステップであり、要素数の管理は配列を効果的に使用するために不可欠です。
ここでは配列の初期化方法と要素数の管理について、その基本から応用までを詳しく解説していきます。
配列の初期化方法
Javaにおける配列の初期化には、複数の方法があります。
最も基本的な方法は、配列宣言時にnew
キーワードを使用して配列のサイズを指定してその後で各要素に値を代入する方法です。
例えば、int[] numbers = new int[5];
と宣言した後、numbers[0] = 10;
のようにして各要素に値を設定します。
また、配列を宣言と同時に初期化する方法もあり、これはint[] numbers = {10, 20, 30, 40, 50};
のように配列の要素を波括弧{}
内に列挙して行います。
この方法は配列のサイズが事前に分かっており、初期値も決まっている場合に便利です。
さらに、Java 8以降ではストリームAPIを使用して配列を初期化することも可能で、特定のパターンに従って配列を初期化する場合や配列の要素を動的に生成する必要がある場合に有用です。
例えば、int[] evenNumbers = IntStream.range(0, 10).filter(i -> i % 2 == 0).toArray();
は、0から9までの偶数のみを含む配列を生成します。
配列の要素数を理解する
配列の要素数、すなわち配列の長さは配列のlength
属性を使用してアクセスでき、この属性は配列が持つ要素の総数を返します。
例えば、int[] numbers = {10, 20, 30, 40, 50};
で初期化された配列の場合、numbers.length
は5
を返します。
配列の長さを理解することは、配列に対する繰り返し処理を行う際に特に重要です。
例えばfor
ループを使用して配列のすべての要素を処理する場合、ループの終了条件として配列の長さを使用します。
これにより、ArrayIndexOutOfBoundsException
のような実行時エラーを防ぐことができます。
また、配列の長さを理解することは配列を動的に扱う際にも役立ちます。
例えばある配列の内容を別の配列にコピーする場合、元の配列の長さを基に新しい配列を生成してその後で要素をコピーできます。
Java配列の要素の追加と操作
Javaでの配列操作は、プログラミングの多くの側面で重要な役割を果たしてくれます。特に、配列への要素の追加や既存の要素の操作はデータを動的に管理する上で欠かせない技術です。
しかしJavaの配列は固定長であるため、直接的な要素の追加や削除はサポートされていません。
ここでは、配列に新しい要素を追加する方法と配列の要素を効果的に操作するテクニックについて解説していきます。
配列への要素の追加方法
Javaの配列はサイズが固定されているため、既存の配列に直接新しい要素を追加することはできません。
新しい要素を追加するための一般的な方法は、元の配列よりも大きい新しい配列を作成して元の配列の要素を新しい配列にコピーした後、新しい要素を追加することです。
例えば、int[] original = {1, 2, 3};
という配列に新しい要素4
を追加するには、次のようにします。
int[] extended = new int[original.length + 1];
for (int i = 0; i < original.length; i++) {
extended[i] = original[i];
}
extended[extended.length – 1] = 4; // 新しい要素を追加
この方法は要素を追加するたびに新しい配列を作成する必要があるため、大量のデータを扱う場合には効率が良くありません。
より動的なデータ構造が必要な場合は、ArrayList
などのコレクションフレームワークを使用することがおすすめです。
配列の要素を操作するテクニック
配列の要素を効果的に操作するには、ループ構造を使用するのが一般的です。例えば、配列内のすべての要素を順番に処理するには、for
ループを使用します。
int[] numbers = {1, 2, 3, 4, 5};
for (int i = 0; i < numbers.length; i++) {
numbers[i] = numbers[i] * 2; // 各要素を2倍にする
}
また、配列の要素を逆順にする、特定の条件を満たす要素だけを操作するなどのより複雑な操作が必要な場合もあり、これらの操作はループ構造や条件分岐を組み合わせることで実現できます。
さらに、Java 8以降ではストリームAPIを使用して配列の要素を効率的に操作することも可能で、ストリームAPIを使用するとフィルタリング、変換、集約などの操作を簡潔に記述できます。
Integer[] numbers = {1, 2, 3, 4, 5};
List<Integer> doubled = Arrays.stream(numbers)
.map(n -> n * 2)
.collect(Collectors.toList());
Javaで配列の要素を追加または操作する際には、配列の固定長の性質を理解し、適切な方法を選択することが重要です。
また、より動的な操作が必要な場合は、Javaのコレクションフレームワークを活用することを検討しましょう。
Java配列の応用例
Java配列はプログラミングの多くの場面で活用されますが、さまざまな形で応用され活用されています。
ここでは、実際のプログラミングにおける配列の応用例をいくつか紹介し、それぞれについてサンプルコードを紹介していきます。
データの保存
配列は、同じ型の複数のデータを一括で管理するために使用されます。
例えば、学生の成績を保存する場合は各学生の成績を配列に格納することができます。
int[] scores = {85, 92, 88, 96, 79};
このコードは、5人の学生の成績を配列に保存しています。
配列を使用することで成績データを一元管理し、後の処理を容易に行うことができるようになります。
データの検索
配列内の特定のデータを検索する操作も一般的でしょう。
例えば、特定の成績を持つ学生がいるかどうかを調べる場合は次のようにします。
int targetScore = 88;
boolean found = false;
for (int score : scores) {
if (score == targetScore) {
found = true;
break;
}
}
System.out.println(“Target score found: ” + found);
このコードは、scores
配列内にtargetScore
と一致する成績が存在するかを検索し、結果を表示しています。
上記のコードはfor文の中でも特に「拡張for文」と呼ばれる使い方となります。
データの処理
配列を使用して、データに対する様々な処理を行うことができます。
例えば、全学生の成績の平均を計算するには次のようにします。
double total = 0;
for (int score : scores) {
total += score;
}
double average = total / scores.length;
System.out.println(“Average score: ” + average);
このコードは、配列内の全成績の合計を求めて平均を計算しています。
データのソート
配列のデータを特定の順序で並べ替える(ソートする)こともよく行われます。
Javaでは、Arrays.sort()
メソッドを使用して配列をソートできます。
Arrays.sort(scores);
System.out.println(Arrays.toString(scores));
このコードは、成績を昇順にソートして結果を表示しています。
データの出力
配列内のデータを出力することは、デバッグや結果の確認に役立ちます。
配列の内容を出力するには、Arrays.toString()
メソッドが便利です。
System.out.println(Arrays.toString(scores));
このコードは、scores
配列の内容を文字列として出力します。
Java配列操作でのよくあるエラーと対処法
Javaで配列を操作する際、特に初心者が直面しやすいエラーがいくつか存在します。
これらのエラーを理解して適切な対処法を知ることは、システム開発を行う上でバグの少ないコードを書くために不可欠です。
ArrayIndexOutOfBoundsException
このエラーは、配列の存在しないインデックスにアクセスしようとしたときに発生します。
例えば5つの要素しかない配列の6番目の要素にアクセスしようとすると、この例外がスローされます。
対処法
配列の長さを超えるインデックスにアクセスしないように注意することが重要です。
array.length
を使用して配列の長さを確認し、ループやアクセスする前にインデックスが配列の範囲内にあることを確認します。
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
IllegalArgumentException
IllegalArgumentException
は、メソッドに不適切な引数が渡されたときに発生します。
配列操作では、例えば配列をソートする際に不正な引数を渡すとこのエラーが発生することがあります。
対処法
メソッドのドキュメントを注意深く読み、期待される引数の型や範囲を理解することが重要です。
また、メソッドを呼び出す前に引数の妥当性をプログラムでチェックすることも有効です。
public void setAge(int age) {
if (age < 0) {
throw new IllegalArgumentException(“Age cannot be negative”);
}
this.age = age;
}
ArrayStoreException
ArrayStoreException
は、配列に互換性のない型のオブジェクトを格納しようとしたときに発生します。
例えば、Integer
の配列にString
を格納しようとするとこの例外がスローされます。
対処法
配列に格納するデータの型が配列の宣言時に指定した型と一致していることを確認してください。
ジェネリックスを使用するコレクションクラスを利用することで型の安全性を高めることができます。
Object[] array = new String[5];
array[0] = “Hello”; // 正しい使用法
array[1] = 123; // ArrayStoreExceptionを引き起こす
まとめ:Java配列をマスターして便利にデータを活用
この記事では、配列の宣言、初期化、要素の追加や操作方法など、Java配列の基本から応用までを網羅的に解説してきました。
Java配列は複数のデータを一括で管理する強力な機能ですが、その用途や応用方法がわかっていなければうまく扱うことはできません。
java初学者にとっては、最初は基本的な知識を身につけることが多く大変に感じることがあるかもしれませんが、プログラミングに慣れてくると便利な機能と思えるものばかりだと感じるはずです。
苦手意識を作らずに積極的に活用しようとする姿勢でいると自然と身につく領域なので、ぜひたくさん使ってみて色々試してみるのをお勧めします。
プログラムについてやシステム開発について、相談や案件のご依頼などがある方はJitera社に一度ご相談してみてはいかがでしょうか。