配列

配列の画像

本頁では、プリミテイブ型の配列について説明します。

同じデータ型が複数あり同じ意味のある纏まりの時に、配列のデータ構造にデータを格納して管理します。
この意味のある纏まり1つが、配列の変数になります。

配列とは、プログラム言語において、コンテナオブジェクトを意味します。

Oracle本家サイトの配列より引用

「コンテナ」とは、オブジェクトの集まりを表現するデータ構造、抽象データ型またはクラスの総称です。

wikiPediaより引用

配列の構文

配列の構文

配列の基本データ型[ ] 変数名 = new 基本データ型[ 配列のサイズ ];

プリミテイブ型の8つ及びStringの配列のサンプルを以下にしめします。

ループ処理のfor文の構文については、ループ構文の頁で詳しく説明します。

配列のサンプル
/**
 * Copyright 2017 yourcompany.
 * 本ソースファイルの著作権は株式会社yourcompanyに所属します。
 * 株式会社yourcompanyの許可なくして、本ソースファイルの
 * 配布、改修、コピー、利用を禁止します。
 * 会社名               :株式会社yourcompany
 * 組織名               :システム開発部
 * プロジェクトコード   :education
 * バージョン           :1.0
 * 最終更新日時         :2017/02/22 10:30
 */

//package宣言部
package jp.co.yourcompany.education.samples;

/**
 *
 * このクラスは、Javaのプ8つのリミティブ型とStringの配列方法について
 * 学習するためのクラスです。
 *
 * @author Raita.Kuwabara
 *
 */
public class JavaBasicTypeArrays {

    //メンバー変数
    private byte[] byteArrays;

    private short[] shortArrays;

    private int[] intArrays;

    private long[] longArrays;

    private float[] floatArrays;

    private double[] doubleArrays;

    private char[] charArrays;

    private boolean[] booleanArrays;

    private String[] stringArrays;



    /**
     * デフォルトコンストラクタ
     * 実行順番1-0-0
     */
    public JavaBasicTypeArrays() {
        //各種配列にサンプルデータを初期設定します。
        init();
    }

    /**
     * メンバ変数初期設定処理
     * 実行順番2
     */
    public void init(){

        setByteSampleArrays();

        setShortSampleArrays();

        setIntSampleArrays();

        setLongSampleArrays();

        setFloatSampleArrays();

        setDoubleSampleArrays();

        setBooleanSampleArrays();

        setCharSampleArrays();

        setStringSampleArrays();

    }

    /**
     * メンバー変数に設定されている配列の値を全て出力する。
     */
    public void outputAllArrays(){

        System.out.println(" ----- START [byte型] ------");
        for( int i = 0; i < byteArrays.length ; i++){
            System.out.println("byteArrays[ " + i +" ]=" + byteArrays[i] );
        }

        System.out.println(" ----- START [short型] ------");
        for( int i = 0; i < shortArrays.length ; i++){
            System.out.println("shortArrays[ " + i + " ]=" + shortArrays[i] );
        }

        System.out.println(" ----- START [int型] ------");
        for( int i = 0; i < intArrays.length ; i++){
            System.out.println("intArrays[ " + i +" ]=" + intArrays[i] );
        }

        System.out.println(" ----- START [long型] ------");
        for( int i = 0; i < longArrays.length ; i++){
            System.out.println("longArrays[ " + i +" ]=" + longArrays[i] );
        }

        System.out.println(" ----- START [float型] ------");
        for( int i = 0; i < floatArrays.length ; i++){
            System.out.println("floatArrays[ " + i +" ]=" + floatArrays[i] );
        }

        System.out.println(" ----- START [double型] ------");
        for( int i = 0; i < doubleArrays.length ; i++){
            System.out.println("doubleArrays[ " + i +" ]=" + doubleArrays[i] );
        }

        System.out.println(" ----- START [boolean型] ------");
        for( int i = 0; i < booleanArrays.length ; i++){
            System.out.println("booleanArrays[ " + i +" ]=" + booleanArrays[i] );
        }

        System.out.println(" ----- START [char型] ------");
        for( int i = 0; i < charArrays.length ; i++){
            System.out.println("charArrays[ " + i +" ]=" + charArrays[i] );
        }

        System.out.println(" ----- START [String型] ------");
        for( int i = 0; i <stringArrays.length ; i++){
            System.out.println("stringArrays[ " + i +" ]=" + stringArrays[i] );
        }

    }


    /**
     * byte型の配列のサンプル値を設定する。
     */
    private void setByteSampleArrays() {
        byteArrays = new byte[5];
        byteArrays[0] = 0b0001; //1
        byteArrays[1] = 0b0010; //2
        byteArrays[2] = 0b0011; //3
        byteArrays[3] = 0b0100; //4
        byteArrays[4] = 0b0101; //5
    }

    /**
     * short型の配列のサンプル値を設定する。
     */
    private void setShortSampleArrays() {
        shortArrays = new short[5];
        shortArrays[0] = 11;
        shortArrays[1] = 12;
        shortArrays[2] = 13;
        shortArrays[3] = 14;
        shortArrays[4] = 15;
    }

    /**
     * int型の配列のサンプル値を設定する。
     */
    private void setIntSampleArrays() {
        intArrays = new int[5];
        intArrays[0] = 101;
        intArrays[1] = 102;
        intArrays[2] = 103;
        intArrays[3] = 104;
        intArrays[4] = 105;
    }

    /**
     * long型の配列のサンプル値を設定する。
     */
    private void setLongSampleArrays() {
        longArrays = new long[5];
        longArrays[0] = 1001L;
        longArrays[1] = 1002L;
        longArrays[2] = 1003L;
        longArrays[3] = 1004L;
        longArrays[4] = 1005L;
    }

    /**
     * float型の配列のサンプル値を設定する。
     */
    private void setFloatSampleArrays() {
        floatArrays = new float[5];
        floatArrays[0] = 0.1f;
        floatArrays[1] = 0.2f;
        floatArrays[2] = 0.3f;
        floatArrays[3] = 0.4f;
        floatArrays[4] = 0.5f;
    }

    /**
     * double型の配列のサンプル値を設定する。
     */
    private void setDoubleSampleArrays() {
        doubleArrays = new double[5];
        doubleArrays[0] = 0.01d;
        doubleArrays[1] = 0.02d;
        doubleArrays[2] = 0.03d;
        doubleArrays[3] = 0.04d;
        doubleArrays[4] = 0.05d;
    }

    /**
     * boolean型の配列のサンプル値を設定する。
     */
    private void setBooleanSampleArrays() {
        booleanArrays = new boolean[5];
        booleanArrays[0] = true;
        booleanArrays[1] = false;
        booleanArrays[2] = true;
        booleanArrays[3] = false;
        booleanArrays[4] = true;
    }

    /**
     * char型の配列のサンプル値を設定する。
     */
    private void setCharSampleArrays() {
        charArrays = new char[5];
        charArrays[0] = 'あ';
        charArrays[1] = 'い';
        charArrays[2] = 'う';
        charArrays[3] = 'え';
        charArrays[4] = 'お';
    }


    /**
     * String型の配列のサンプル値を設定する。
     */
    private void setStringSampleArrays() {
        stringArrays = new String[5];
        stringArrays[0] = "配列1番目";
        stringArrays[1] = "配列2番目";
        stringArrays[2] = "配列3番目";
        stringArrays[3] = "配列4番目";
        stringArrays[4] = "配列5番目";
    }

    //---------------- 良く起きるexceptionシリーズ

    /**
     * javaコマンドで起動されるmainメソッド
     * JavaBasicTypeのインスタンスを生成し、全てのサンプルを出力する。
     * @param args javaコマンドで引き渡しされる引数
     */
    public static void main( String[] args ) {

        JavaBasicTypeArrays javaBasicTypeArrays = new JavaBasicTypeArrays();
        javaBasicTypeArrays.outputAllArrays();

    }
}
						
実行コマンドの手順
c:¥projects¥education>javac -d deploy¥classes -s src¥main¥java src¥main¥java¥jp¥co¥yourcompany¥education¥samples¥JavaBasicTypeArrays.java -encoding UTF8
c:¥projects¥education>jar -cvf deploy¥education-main.jar -C deploy¥classes .
c:¥projects¥education>java -cp deploy¥education-main.jar jp.co.yourcompany.education.samples.JavaBasicTypeArrays
						
実行結果
 ----- START [byte型] ------
byteArrays[ 0 ]=1
byteArrays[ 1 ]=2
byteArrays[ 2 ]=3
byteArrays[ 3 ]=4
byteArrays[ 4 ]=5
 ----- START [short型] ------
shortArrays[ 0 ]=11
shortArrays[ 1 ]=12
shortArrays[ 2 ]=13
shortArrays[ 3 ]=14
shortArrays[ 4 ]=15
 ----- START [int型] ------
intArrays[ 0 ]=101
intArrays[ 1 ]=102
intArrays[ 2 ]=103
intArrays[ 3 ]=104
intArrays[ 4 ]=105
 ----- START [long型] ------
longArrays[ 0 ]=1001
longArrays[ 1 ]=1002
longArrays[ 2 ]=1003
longArrays[ 3 ]=1004
longArrays[ 4 ]=1005
 ----- START [float型] ------
floatArrays[ 0 ]=0.1
floatArrays[ 1 ]=0.2
floatArrays[ 2 ]=0.3
floatArrays[ 3 ]=0.4
floatArrays[ 4 ]=0.5
 ----- START [double型] ------
doubleArrays[ 0 ]=0.01
doubleArrays[ 1 ]=0.02
doubleArrays[ 2 ]=0.03
doubleArrays[ 3 ]=0.04
doubleArrays[ 4 ]=0.05
 ----- START [boolean型] ------
booleanArrays[ 0 ]=true
booleanArrays[ 1 ]=false
booleanArrays[ 2 ]=true
booleanArrays[ 3 ]=false
booleanArrays[ 4 ]=true
 ----- START [char型] ------
charArrays[ 0 ]=あ
charArrays[ 1 ]=い
charArrays[ 2 ]=う
charArrays[ 3 ]=え
charArrays[ 4 ]=お
 ----- START [String型] ------
stringArrays[ 0 ]=配列1番目
stringArrays[ 1 ]=配列2番目
stringArrays[ 2 ]=配列3番目
stringArrays[ 3 ]=配列4番目
stringArrays[ 4 ]=配列5番目
						

配列初期化時の指定方法

配列初期化時の構文に次のも表現方法として可能です。

配列のサンプル
    private byte[] byteArrays;
    //以下のように変数直後に配列構文を指定できますが、推奨できません。
    private byte byteArrays2[];
						

1行目の方法と2行目の方法が乱用されているソースファイル群は、運用性を著しく低下させます。
特定の理由がない限り、1行目の方法に統一して下さい。

メンバー変数やメソッド内のローカル変数で配列を利用する際の初期化方法に以下の構文が可能です。

メンバー変数の例
    private int[] intArrays = { 101 , 102 , 103 ,104 , 105 };
						
メソッド内のローカル変数の例
    public void Hoge(){
        int[] intLocalArrays2 = { 201 , 202 , 203 ,204 , 205 };
        //処理内容
    }
						

注意JavaBasicTypeArraysのサンプルでは、メンバ変数の定義で配列の初期値を設定していません。
メンバーメソッドsetHogeSampleArrays内で メンバー変数 = new データ型[5] と初期値を指定しています。
これをsetHogeSampleArrays内で次のように記述することはコンパイルエラーになります。

JavaBasicTypeArraysのsetCharSampleArrays
    private void setCharSampleArrays() {
        charArrays = { 'あ' , 'い' , 'う' , 'え' , 'お'};
    }
						

配列長の取得

配列長の構文

配列変数名.length;

多次元配列

多次元配列の構文

型名 配列変数名[][] = new 型名[要素数][値の配列数]

多次元配列の画像
多次元配列のサンプル[お勧め]
    String[][] multipleArrays = new String[5][3];

    String[] oneRecode = {"1-1値" , "1-2値" , "1-3値" };
    String[] towRecode = {"2-1値" , "2-2値" , "2-3値" };
        // :3~5割愛
    multipleArrays[0] = oneRecode;
    multipleArrays[1] = twoRecode;
        // :3~5割愛
						
多次元配列のサンプル2
    String[][] multipleArrays = new String[5][3];
        // :3~5割愛
    multipleArrays[0][0] = new String("1-1値");
    multipleArrays[0][1] = new String("1-2値");
    multipleArrays[0][2] = new String("1-3値");
    multipleArrays[1][0] = new String("2-1値");
    multipleArrays[1][1] = new String("2-2値");
    multipleArrays[1][2] = new String("2-3値");
        // :3~5割愛
						

多次元配列の初期設定方法は、複数ありますが[お勧め]の方を推奨します。

配列のコピー

java.util.Arraysの利用

import節に import java.util.Arrays; を指定する。

型名 コピー先変数名 = Arrays.copy( コピー元変数名 , コピー先配列長)

Oracle社Java8API参照
Arrays.copyサンプル
    int[] fromArrays = { 101 , 102 , 103 };
    //そのままコピー
    int[] toArrays = Arrays.copy( fromArrays , fromArrays.length )
    //最後の103が削れられる
    int[] toArrays2 = Arrays.copy( fromArrays , 2  );
    //4番目にintの初期値0が追加されてコピー
    int[] toArrays3 = Arrays.copy( fromArrays , 4  );
						

このコピー方法は色々ありますが、java.util.ArraysのAPIを確認して色々試してください。

最後に

要点配列の記述方法やコピー方法には、色々な方法があります。
チームで開発しているときは、コーディング規約などルールベースのお作法に従い、方法を揃えて下さい。

JavaBasicTypeArrays.javaのダウンロードと実行方法

java_sample5.zipファイルを「c:¥download¥java¥samples¥」に保存して下さい。

java_sample5.zipファイルを「c:¥projects」配下に展開して下さい。

コマンドプロンプトを起動して、「sample5.bat」を実行して下さい。

javac,jar,javaコマンドが随時実行されて、実行結果の内容が表示されます。

Linux,Unix,iOSの方はバッチファイルはお手数ですが作成して下さい。改行コードが「CRLF」の点ご留意ください。