この記事の目次
1. 配列とは
2. 配列の作成
● 配列変数の宣言
型名[] 配列変数名; 配列変数名 = new 型名[要素数];
型名 配列変数名[] = new 型名[要素数];
配列を宣言するときに配列の要素数も宣言しなければなりません。
int[] array1; //int[]型のarray1配列を宣言する array1 = new int[3]; //array1配列の要素数は3と宣言する int array2[] = new int[3]; //array2配列の型と要素数を同時に宣言する
● 要素の代入
配列変数名[インデックス] = 値;
配列変数名[インデックス]で表し、インデックスとは、配列の何番目かを表す数値です。package helloworld;
public class HelloWorld {
public static void main(String[] args) {
int[] age;
age = new int[3];
//age配列に要素を入れる
age[0] = 20; //age配列の0番目に20を入れる
age[1] = 30; //age配列の1番目に30を入れる
age[2] = 40; //age配列の2番目に40を入れる
System.out.println("age配列の0番目の要素の値は: " + age[0]);
System.out.println("age配列の1番目の要素の値は: " + age[1]);
System.out.println("age配列の2番目の要素の値は: " + age[2]);
}
}age配列の0番目の要素の値は: 20 age配列の1番目の要素の値は: 30 age配列の2番目の要素の値は: 40
● 配列の宣言と同時に要素の代入を実行
型名 配列変数名[] = {値1, 値2, ... }; JAVAのArrayListについて詳しく見たい方:
| JAVAのArrayList ../../../java/java-collection-arraylist.html この記事ではListを実装したクラスの一つであるArrayListを紹介します。ArrayListは大きさが可変という点でたくさんの応用があるので、開発現場でよく・・・ |
package helloworld;
public class HelloWorld {
public static void main(String[] args) {
//配列の宣言と初期化
int age[] = {20,30,40};
System.out.println("age配列の0番目の要素の値は: " + age[0]);
System.out.println("age配列の1番目の要素の値は: " + age[1]);
System.out.println("age配列の2番目の要素の値は: " + age[2]);
}
}age配列の0番目の要素の値は: 20 age配列の1番目の要素の値は: 30 age配列の2番目の要素の値は: 40
3. 配列の取り扱い
● lengthで要素数を取得
配列変数名.length
import java.util.*;
public class Main {
public static void main(String[] args) {
//配列の宣言と初期化
int age[] = {20,30,40};
int ageLength = age.length;
System.out.println("age配列の要素数は: " + ageLength);
}
}age配列の要素数は: 3
● for文と配列
配列の要素を表示し、取り扱いたい時に、for文を利用することが多いです。
主に、for文で配列の表示方法は以下の二つの方法です。
従来のfor文
for (int i = 0 ; i < 配列変数名.length ; i++){
配列の要素などの処理
}このようにfor文を用いて配列の各要素を0番目から最後(leng配列変数名.length)までの順番に取り出したり、それに対して何らかの処理を行います
package helloworld;
public class HelloWorld {
public static void main(String[] args) {
//配列の宣言と初期化
int age[] = {45,20,30,25,35,40,15};
// 配列ageを表示
System.out.print("age配列の要素: ");
for (int i = 0; i < age.length; i++) {
System.out.print(age[i] + " ");
}
}
}age配列の要素: 45 20 30 25 35 40 15
拡張for文
for (要素の型 任意の変数名 : 配列変数名){
配列の要素などの処理
}拡張for文は配列の要素を1つずつ取り出すループを簡単に書くための文法です。ループが1周するたびに次の要素の内容が「任意の変数名」で指定した変数に格納されるため、ブロックの中ではその変数を利用して要素を取り出します。
package helloworld;
public class HelloWorld {
public static void main(String[] args) {
//配列の宣言と初期化
int age[] = {45,20,30,25,35,40,15};
// 配列ageを表示
System.out.print("age配列の要素: ");
for (int i : age) {
System.out.print(i + " ");
}
}
}age配列の要素: 45 20 30 25 35 40 15
● Arrays.sortで要素をソート
昇順 : Arrays.sort(配列変数名); 降順 : Arrays.sort(配列変数名, Collections.reverseOrder());
import java.util.Arraysは必要です。import java.util.Collectionsが必要です。また、Collectionsクラスを使う場合は、ソートする配列にはInteger型などのクラス型を指定する必要があります。int型などのプリミティブ型を指定するとエラーが発生するので、注意しましょう。package helloworld;
import java.util.Arrays;
import java.util.Collections;
public class HelloWorld {
public static void main(String[] args) {
//配列の宣言と初期化
Integer age[] = {45,20,30,25,35,40,15};
//age配列を昇順にソートする
Arrays.sort(age);
// 配列ageを表示
System.out.print("昇順にしたage配列: ");
for (Integer i = 0; i < age.length; i++) {
System.out.print(age[i] + " ");
}
//age配列を降順にソートする
Arrays.sort(age, Collections.reverseOrder());
// 配列ageを表示
System.out.print("
降順にしたage配列: ");
for (Integer i = 0; i < age.length; i++) {
System.out.print(age[i] + " ");
}
}
}昇順にしたage配列: 15 20 25 30 35 40 45 降順にしたage配列: 45 40 35 30 25 20 15
● System.arraycopyで配列をコピーし、結合する。
System.arraycopy (コピー元配列変数名, コピー元の開始位置,コピー先配列変数名, コピー先の開始位置,コピーする要素の数 )
System.arraycopyメソッドはある配列の要素を別の配列にコピーするSystemクラスのメソッドです。
このメソッドを利用する目的は主に配列のコピーと、配列の結合です。
* 配列のコピー
package helloworld;
public class HelloWorld {
public static void main(String[] args) {
//配列の宣言と初期化
int age1[] = {45,20,30,25,35,40,15};
//新配列の宣言
int age2[] = new int[10];
//配列age1のすべての要素を配列age2にコピーする
System.arraycopy(age1,0,age2,0,age1.length);
// 配列age2を表示
System.out.print("age2配列の要素: ");
for (int i = 0; i < age2.length; i++) {
System.out.print(age2[i] + " ");
}
}
}age2配列の要素: 45 20 30 25 35 40 15 0 0 0
System.arraycopy(age1,0,age2,0,age1.length)で配列age1の0番目から配列age2の0番目にage1.length要素をコピーしました。しかし、最初に宣言した配列age2の要素数は10だったので、7、8、9番目の要素は0のままになりました。* 配列の結合
System.arraycopyメソッドを利用して、元の二つの配列から新配列にコピーすることができます、つまり元の2つの配列から新配列に結合できます。
package helloworld;
public class HelloWorld {
public static void main(String[] args) {
//配列の宣言と初期化
int age1[] = {45,20,30,25,35,40,15};
//配列の宣言と初期化
int age2[] = {9,99,999};
//新配列の宣言
int age3[] = new int[age1.length + age2.length];
//配列age1のすべての要素を配列age3の0番目からにコピーする
System.arraycopy(age1,0,age3,0,age1.length);
//配列age2のすべての要素を配列age3の「age1.length」番目からにコピーする
System.arraycopy(age2,0,age3,age1.length,age2.length);
// 配列age3を表示
System.out.print("age3配列の要素: ");
for (int i = 0; i < age3.length; i++) {
System.out.print(age3[i] + " ");
}
}
}age3配列の要素: 45 20 30 25 35 40 15 9 99 999
● ArrayからArrayListに
Arrays.asList(age)のように、配列ageをListに変換することができます。 JAVAのArrayListについて詳しく見たい方:
| JAVAのArrayList ../../../java/java-collection-arraylist.html この記事ではListを実装したクラスの一つであるArrayListを紹介します。ArrayListは大きさが可変という点でたくさんの応用があるので、開発現場でよく・・・ |
4. まとめ
ここまではいかがでしょうか?配列についてよくわかりましたか?
この記事では配列の宣言、初期化、追加などの基本操作、配列の要素の取り扱いに関するメソッドなどを紹介しました。次は配列に関する演習問題を挑戦してみてください。
5. 演習問題
JAVAの配列の演習問題
- JAVA - キーボードから配列の要素数を入力して、配列を宣言します。それから配列の各要素に値を入力し、最後にコンソールに配列の全要素を出力します。
- JAVA - 配列を作成し、その配列を
Arrays.sortで昇順と降順に並べ直す。 - JAVA - 配列を作成し、その配列を2重for文で昇順と降順に並べ直す。(Bubble sort と呼ばれる)
- JAVA - int[]型の配列の要素数と各要素をキーボードから入力し、その配列は対称配列か確認する。
- JAVA - 配列変数を宣言し、初期化する。配列の中から、奇数の要素と偶数の要素を数える。
- JAVA - 作成した配列から好きな要素を削除する。
- JAVA - 配列を作成し、奇数と偶数の要素を別々の配列に分け出す。
- JAVA - 科目数と科目の点数をキーボードから入力し、最高点数、最低点数、合計点数、平均点数を計算する。
- JAVA - 1から10までの乱数を生成して、ランダム要素の配列を作成する。
- JAVA - 上の課題からランダム要素の配列を作成し、並列の要素値からグラフを作成する。