JavaA2Z

KAB-studio > プログラミング > JavaA2Z > 配列とは

配列

日本語 配列
英語 array
ふりがな はいれつ
フリガナ ハイレツ

解説

のひとつ。
あるひとつのを連続して並べたもの。
 
並べられた各値を「要素」と呼ぶ。
要素の数は配列の作成時に決められ、後で変更することはできない。
値へのアクセスは添え字(「[]」のこと)とインデックスナンバーう。
サイズの取得はlengthフィールドう。
 
配列はクラスではないが「参照」を通してアクセスする。
クラスと同じくnewを使用してインスタンスを作り、その参照変数に格納する。
また、インスタンスを作る際に要素数を決定する。
各値はインスタンス内にあるのであって、配列の参照内にあるのではない。
 
配列に似たものとして「コレクション」がある。
コレクションに比べて「固定長」「が固定されている」等のデメリットがある反面、この「が固定されている」のためにダウンキャストを必要しない。
不要なキャストをしないためにも、メソッド引数もしくは戻り値として値を返す場合にはコレクションよりも配列を使用すべき。
配列からコレクションへはArraysクラスのasList()メソッドで、コレクションから配列へはCollectionインターフェイスのtoArray()メソッドで相互変換できるため、場面場面で配列とコレクションを選択して使用するのがよい。

(KAB-studioからのおしらせです)

サンプルプログラム(とか)サンプルを別ウィンドウで表示サンプルをクリップボードへコピー(WindowsでIEの場合のみ)

// Sample.java
import java.util.Arrays;
import java.util.List;
import java.util.Iterator;

public class Sample
{
    public static void main( String[] args )
    {
        // int型配列の参照を作ります。
        int[] ints;
        // この段階ではint型配列の「実体」(インスタンス)はまだ
        // 作られていません。そこで要素数3のint型配列のインスタンスを
        // 作り、その参照を渡します。
        ints = new int[3];
        // 各要素に値を格納します。
        ints[0] = 100;
        ints[1] = 200;
        ints[2] = 300;
        // 0番目の要素を取得します。
        System.out.println( ints[0] );
        // 100

        // サイズはlengthフィールドで取得します。
        System.out.println( ints.length );
        // 3

        // 配列は固定長なのでサイズは変わりません。
        try
        {
            // 要素数は3ですが、末端のインデックスナンバーは2です。
            System.out.println( ints[3] );
        }
        catch( ArrayIndexOutOfBoundsException e )
        {
            // 範囲を超えてアクセスするとArrayIndexOutOfBoundsExceptionが投げられます。
            // 配列と異なるので注意。
            e.printStackTrace();
            // java.lang.ArrayIndexOutOfBoundsException: 3
            //      at Sample.main(Sample.java:29)
        }

        // 配列の要素は「配列のインスタンス」にあるわけですから、
        // 要素数もインスタンスごとに決められることになります。
        // ということは、参照先のインスタンスを切り替えることで
        // 配列の参照としてはサイズは変更できます。
        // 要素数5のint型配列のインスタンスを作成します。
        ints = new int[5];
        // これで、ints的には「配列の要素数が5」となりました。
        // でも、最初に作成したインスタンスとは別なので、値は
        // 当然残っていません。
        System.out.println( ints[0] );
        // 0

        // 要素数3のInteger型配列を作ります。
        Integer[] integers = new Integer[] { new Integer( 100 ), new Integer( 200 ), new Integer( 300 ) };
        // このように、格納する要素が決まっている場合には、
        // 「配列初期化子」を使用して、インスタンスの作成と同時に
        // 初期化することができます。
        
        // 要素の型がクラスなら、コレクションに変換できます。
        List list = Arrays.asList( integers );
        // だからイテレーターで配列にもアクセスできます。
        for( Iterator iter = list.iterator(); iter.hasNext(); )
        {
            Integer integer = (Integer)iter.next();
            System.out.print( integer + ", " );
        }
        System.out.println();
        // 100, 200, 300, 

        // 配列は型が決まっているため、違う型の値を
        // 代入することはできません。
        // integers[0] = "あいうえお";
        // 型の不一致: String から Integer には変換できません。
    }
}
// Sample.java
import java.util.Arrays;
import java.util.List;
import java.util.Iterator;

public class Sample
{
    public static void main( String[] args )
    {
        // int型配列の参照を作ります。
        int[] ints;
        // この段階ではint型配列の「実体」(インスタンス)はまだ
        // 作られていません。そこで要素数3のint型配列のインスタンスを
        // 作り、その参照を渡します。
        ints = new int[3];
        // 各要素に値を格納します。
        ints[0] = 100;
        ints[1] = 200;
        ints[2] = 300;
        // 0番目の要素を取得します。
        System.out.println( ints[0] );
        // 100

        // サイズはlengthフィールドで取得します。
        System.out.println( ints.length );
        // 3

        // 配列は固定長なのでサイズは変わりません。
        try
        {
            // 要素数は3ですが、末端のインデックスナンバーは2です。
            System.out.println( ints[3] );
        }
        catch( ArrayIndexOutOfBoundsException e )
        {
            // 範囲を超えてアクセスするとArrayIndexOutOfBoundsExceptionが投げられます。
            // 配列と異なるので注意。
            e.printStackTrace();
            // java.lang.ArrayIndexOutOfBoundsException: 3
            //      at Sample.main(Sample.java:29)
        }

        // 配列の要素は「配列のインスタンス」にあるわけですから、
        // 要素数もインスタンスごとに決められることになります。
        // ということは、参照先のインスタンスを切り替えることで
        // 配列の参照としてはサイズは変更できます。
        // 要素数5のint型配列のインスタンスを作成します。
        ints = new int[5];
        // これで、ints的には「配列の要素数が5」となりました。
        // でも、最初に作成したインスタンスとは別なので、値は
        // 当然残っていません。
        System.out.println( ints[0] );
        // 0

        // 要素数3のInteger型配列を作ります。
        Integer[] integers = new Integer[] { new Integer( 100 ), new Integer( 200 ), new Integer( 300 ) };
        // このように、格納する要素が決まっている場合には、
        // 「配列初期化子」を使用して、インスタンスの作成と同時に
        // 初期化することができます。
        
        // 要素の型がクラスなら、コレクションに変換できます。
        List list = Arrays.asList( integers );
        // だからイテレーターで配列にもアクセスできます。
        for( Iterator iter = list.iterator(); iter.hasNext(); )
        {
            Integer integer = (Integer)iter.next();
            System.out.print( integer + ", " );
        }
        System.out.println();
        // 100, 200, 300, 

        // 配列は型が決まっているため、違う型の値を
        // 代入することはできません。
        // integers[0] = "あいうえお";
        // 型の不一致: String から Integer には変換できません。
    }
}

この単語を含むページ

「解説」に含まれているページ

はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
Yahoo!ブックマーク 詳細を表示 users
del.icio.us 登録する RSSに登録
サンプルを別ウィンドウで表示
サンプルをクリップボードへコピー(WindowsでIEの場合のみ)
update:2006/03/06
このページは、Javaプログラミング言語についての用語を網羅した辞書「JavaA2Z」の一ページです。
詳しくは「JavaA2Z」表紙の説明をご覧ください。