この記事の目次
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 - 上の課題からランダム要素の配列を作成し、並列の要素値からグラフを作成する。