今回は、Javaの配列操作について基本から応用まで詳しく解説します。
配列を使いこなすことができれば、プログラムの柔軟性と効率が大幅に向上します。
例えば、同じ種類のデータを一括して処理することができるため、複雑なデータ操作も簡単に行えます。
また、配列を使うことで、データの検索、ソート、フィルタリングなどの処理が効率的に行えます。
この記事では、配列の基本的な使い方から始め、応用的な操作までを順を追って説明します。
まずは配列の基本を学んでいこう!
目次
配列の基本
配列とは?
配列はデータを効率的に管理・操作するために使います。
複数のデータを1つの変数に格納できるのが配列の特徴です。
配列の宣言と初期化
配列を使用するためには、まず宣言と初期化を行いましょう。
配列の初期化の例題は以下になります。
// 配列の宣言
int[] numbers;
// 配列の初期化
numbers = new int[5]; // 要素数5の配列を作成
// 宣言と初期化を同時に行うことも可能
int[] scores = new int[10];
配列の要素へのアクセス
配列の各要素にアクセスするには「インデックス」を使います。
インデックスは、配列内の各データの位置を示す番号のことです。
Javaの配列では、最初の要素のインデックスは「0」です。
つまり、1番目のデータを取得するにはインデックス「0」を使います。次に、2番目のデータを取得するにはインデックス「1」を使います。
ここで注意が必要なのは、インデックスは「0」から始まるということです。
以下が例題になります。
numbers[0] = 10; // 配列の最初の要素に10を代入
numbers[1] = 20; // 配列の2番目の要素に20を代入
int firstNumber = numbers[0]; // 配列の最初の要素を取得
配列の初期値を指定
配列は、初期化時に値を指定することもできます。
すでに決まったデータを変数に格納したい場合、初期化時に値を指定することでコードがすっきりしますよ。
int[] ages = {18, 20, 22, 24, 26};
配列の操作
配列の長さを取得
配列の長さ(要素数)は、lengthプロパティを使用して取得します。
lengthプロパティを使うと、その配列に含まれる要素の数を取得できます。
例えば、次のような配列があるとします。
int[] ages = {18, 20, 22, 24, 26};
int length = ages.length; // ages配列の長さを取得
このコードでは、ages.lengthが配列agesの要素数(5)を返し、それを変数lengthに代入しています。
配列のループ処理
配列の全要素に対して操作を行うときには、ループ処理を使います。
Javaでは、forループと拡張forループ(for-eachループ)の2つの方法があります。
forループは、指定した回数だけ繰り返し処理を行うループ構文で、配列の全要素にアクセスするために最も一般的に使われます。
以下は、forループを使って配列の全要素を出力する例です。
int[] numbers = {10, 20, 30, 40, 50};
//配列の要素数だけループする。ここでは5回ループ
for (int i = 0; i < numbers.length; i++) {
System.out.println(numbers[i]);
}
拡張forループ(for-eachループ)は、配列やコレクションの全要素に対して繰り返し処理を行うためのシンプルな構文です。
以下は、拡張forループを使って配列の全要素を出力する例です。
int[] ages = {18, 20, 22, 24, 26};
//配列の要素数だけループする。ここでは5回ループ
for (int age : ages) {
System.out.println(age);
}
拡張forループは、インデックスを管理する必要がないため、コードがシンプルで読みやすくなるメリットがあります。
配列のコピー
配列をコピーする方法を2つ紹介します。
まず一つ目がfor文を使って配列の各要素を一つずつコピーする方法です。
以下は、その具体例です。
int[] original = {1, 2, 3, 4, 5}; // コピー元の配列
int[] copy = new int[original.length]; // コピー先の配列を、コピー元と同じ長さで作成
for (int i = 0; i < original.length; i++) {
copy[i] = original[i]; // コピー元の各要素をコピー先に代入
}
もう一つの方法は、System.arraycopyメソッドを使って配列をコピーする方法です。
このメソッドを使うと、配列のコピーを簡単に行うことができます。
int[] original = {1, 2, 3, 4, 5}; // コピー元の配列
int[] copy = new int[original.length]; // コピー先の配列を、コピー元と同じ長さで作成
System.arraycopy(original, 0, copy, 0, original.length); // 配列をコピー
System.arraycopy(original, 0, copy, 0, original.length);
配列のソート
配列の要素をソートするためには、Arraysクラスのsortメソッドを使用します。
以下がソートメソッドの具体例です。
import java.util.Arrays;
int[] unsorted = {3, 5, 1, 4, 2};
Arrays.sort(unsorted); // 配列を昇順にソート
for (int num : unsorted) {
System.out.println(num);
}
多次元配列
Javaでは、多次元配列(配列の配列)も扱えます。
// 2次元配列の宣言と初期化
int[][] matrix = new int[3][3]; // 3x3の2次元配列を作成
// 初期値を指定する場合
int[][] predefinedMatrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
多次元配列の要素へのアクセス
多次元配列の要素には、行と列のインデックスを使用してアクセスします。
matrix[0][0] = 1; // 最初の行、最初の列の要素に1を代入
int value = predefinedMatrix[1][2]; // 2番目の行、3番目の列の要素を取得
多次元配列のループ処理
多次元配列の全要素に対して操作を行う場合、ネストしたループ処理を使用します。
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[i].length; j++) {
System.out.println(matrix[i][j]);
}
}
// 拡張forループを使用する場合
for (int[] row : predefinedMatrix) {
for (int num : row) {
System.out.println(num);
}
}
>> 未経験からでもITエンジニアを目指す人におすすめの転職サービスを紹介
応用編:配列を使用した簡単なプログラム
配列を使用して簡単なプログラムを作成してみます。
例えば、以下はユーザーから入力された数値の平均を求めるプログラムです。
import java.util.Scanner;
public class ArrayAverage {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int[] numbers = new int[5];
int sum = 0;
System.out.println("5つの数値を入力してください:");
for (int i = 0; i < numbers.length; i++) {
numbers[i] = scanner.nextInt();
sum += numbers[i];
}
double average = (double) sum / numbers.length;
System.out.println("平均値は: " + average);
}
}
5行目ではScannerオブジェクトを作成し、ユーザーの入力を受け取れるようにしています。
6行目、7行目では、numbersという名前の要素数5の整数型配列を作成し、変数sumを0で初期化しています。
11行目では、forループを使ってユーザーから5つの数値を入力させ、それを配列numbersに格納しています。同時に、その値を変数sumに加算していますね。
16行目では、変数sumを配列の長さで割り、平均値を計算しています。
sumをdouble型にキャストしてから割り算を行うことで、結果が整数ではなく小数点付きの値になります。
※キャストとは、あるデータ型を別のデータ型に変換することを指します。
この場合、sumは整数型(int)ですが、これを浮動小数点型(double)に変換しています。
Java言語を学ぶなら『スッキリわかるJava入門第3版』がおすすめ
これからJava言語を学んでプログラマーを目指す人に大きな声でおすすめしたい書籍が『スッキリわかるJava入門第3版』です。
こちらの書籍は私が通っていたプログラミングスクールでも最初に手渡されるほど、初級向けの内容かつ基礎がたっぷり詰まった1冊となっています。
私自身もこちらの書籍からJava言語を学びはじめました。こちらの本ならJava言語をまったく知らない人でも読みやすいと思います。
値段もそれほど高くなく、1冊で基礎を身につけられるのでプログラミング初心者の方は1度手に取ってみてはいかがでしょうか。
まとめ
今回の記事では、配列について簡単に紹介しました。
初めてプログラミングを学ぶ人がつまづいやすいのが、多次元配列です。
多次元配列に関しては数字だけでは混乱しやすいので、テーブルの形式でデータが入っていると意識すると良いかもしれません。
次回はメソッドについて解説していきます。
▼前回の記事
>> 未経験からでもITエンジニアを目指す人におすすめの転職サービスを紹介