32

私は Java で配列を扱っていますが、質問があります。以下に示すように、Java の配列は同様のデータ型のコレクションであることを知っています。

int[] x = new int[]{1,2,3};

上記の宣言Integerは、整数型のコレクションである配列として読み取ることができます。

このことを考慮:

Object[] x = new Object[]{1,2,3,"srk"};

ここで、上記は異なるデータ型の集まりである配列と言えますか、それともObject類似したデータ型、つまりオブジェクトの配列ですか?

私はこれについて混乱し、懐疑的です。Java では、さまざまなデータ型を保持できる配列または任意の種類のコレクションを作成できますか?

4

6 に答える 6

43

Java のすべてのオブジェクトは Object を拡張します。

したがって、オブジェクトの配列を宣言して配列を作成すると、完全に説明的でなくなる可能性があります。

Object[] arr = new Object[6];

このコードは、長さ 6 のオブジェクトの配列を作成します。

したがって、たとえば、エントリが 2 つのペアになる配列を作成できます。この場合、最初のオブジェクトは文字列で、2 番目のオブジェクトは整数です。

Object[] arr = new Object[6];

arr[0] = new String("First Pair");
arr[1] = new Integer(1);
arr[2] = new String("Second Pair");
arr[3] = new Integer(2);
arr[4] = new String("Third Pair");
arr[5] = new Integer(3);

これらのオブジェクトが何であるかを実際に理解したい場合は、キャストが必要になります。

int x = (Integer)arr[1];
于 2013-05-03T16:30:48.757 に答える
5

他の回答に追加するには、必要なものをオブジェクトの配列に入れることができます。Objectただし、特定の要素が持つメソッドまたはプロパティにアクセスしたい場合は、Java がそれを型として認識するため、必要な型にダウンキャストするObject必要があります。これには注意が必要です。と。

例:

    Object test[];
    test = new Object[]{1, 2, "three", new Date()};
    System.out.println( ( (Date)test[3] ).getMonth() );
    // the above line will output '4', but there will be a compilation error
    // if the cast (Date) is emitted
于 2013-05-03T16:40:41.520 に答える
0

Object[] 配列を作成することは、それを行う 1 つの方法です。それ以外の場合は、必要な変数を使用してクラスを作成し、そのクラスのオブジェクトの配列を取得できます。

class MyClass{
    int var_1;
    String var_2;
    ...
    ...
}
...
MyClass[] arr = new MyClass[3];

次に、必要な場所で arr を使用します。

于 2013-05-03T16:34:48.777 に答える