1

Javaの配列に関していくつか質問があります。

次の式でいくつのオブジェクトが作成されますか?

(a)new int[0]:作成されたオブジェクトが1つあり、サイズは0です。???

(b)new int[2][2]:作成されたオブジェクトが1つあり、2つの行と列を持つ配列です。???

(c)new int[2][]:オブジェクトは作成されていません???

式の横にある私の解決策が正しいかどうか疑問に思いました。そうでない場合は、うまくいけば、あなたが助けて、私にそれらについてのいくつかの説明を与えることができます。私は本当に私がすることになっていることを理解していません。

前もって感謝します!

4

2 に答える 2

4

以下は、Java仕様からの抜粋です。

Javaプログラミング言語では、配列はオブジェクト(§4.3.1)であり、動的に作成され、タイプObject(§4.3.2)の変数に割り当てることができます。クラスObjectのすべてのメソッドは、配列で呼び出すことができます。

これは、すべての配列が独自のオブジェクトであることを意味し、a)正しい答えになります。

b) 3つのオブジェクトが作成されます。最初に1つの配列、各2を含む2つintの配列。int-entriesはJavaのプリミティブ型であるため、カウントしません。

c) 1つのオブジェクトが作成されます:2つのnullエントリを持つ1つの配列。

于 2012-12-22T10:59:53.767 に答える
3

new int [0]

はい、これは空の配列です。1つのオブジェクトが作成されます。

    int[] emptyArray = new int[0];
    System.out.println(emptyArray.length); // Outputs 0

new int [2] [2]

はい、これにより2行と2列の配列が作成され、3つのオブジェクトが作成されます。

    int[][] bar = new int[2][2];
    System.out.println(bar.getClass()); // Outputs class [[I
    int[] bar1 = bar[0];
    System.out.println(bar1.getClass());  // Outputs class [I
    int[] bar2 = bar[1];
    System.out.println(bar2.getClass());  // Outputs class [I

new int [2] []

Javaはジャグ配列をサポートしています。これは、これを作成するときにint[2][]、さまざまなサイズの配列があることを意味しますint[]。ここでは1つのオブジェクトのみが作成されます。

    int[][] foo = new int[2][];
    System.out.println(foo[0]);  // Outputs null
    System.out.println(foo[1]);  // Outputs null
    foo[0] = new int[10];
    foo[1] = new int[5];
于 2012-12-22T10:57:12.343 に答える