3

Javaで次のコードを実行する場合:

public class Testing {

    public static void main(String[] args) {
        TestObject[] array = new TestObject[4];
        //array[0] = new TestObject();
        System.out.println(Arrays.asList(array));
    }
}

class TestObject {
    String aString;

    public TestObject() {
        aString = "This has been initialized.";
    }
}

印刷され(null、null、null、null)、array[0] = new TestObject();コメントがない場合、最初のオブジェクトはメモリアドレスを持ちます(nullではありません)。配列が最初に適切に初期化されたときに、Javaが配列内の各オブジェクトのコンストラクターを自動的に呼び出さない理由について私は混乱しています。それが現在機能する方法の利点は何ですか?それはスペースの問題ですか(そうするにはコストがかかりすぎるため)?

たぶん私は何かばかげたものを見落としたか、単に間違っています。これは私が抱えている問題とは直接関係がないので、間違ったフォーラムである場合はお詫び申し上げます。

4

2 に答える 2

6

TestObjectのサブクラスである、またはデフォルト以外のコンストラクターで構築された実オブジェクトで配列を埋めたい場合はどうなりますか?現実の世界では、同じオブジェクトがたくさんある配列が必要になることはめったにありません。

于 2012-07-21T04:16:25.170 に答える
0

配列を作成するとnew TestObject[4]、への4つの参照を保持できますTestObject。との違いを理解してTestObject[]くださいTestObject

TestObject[]TestObject--オブジェクトのリファレンスストアです。を作成するList<TestObject>場合は、リストにも参照を入力する必要があります。

于 2012-07-23T11:15:19.233 に答える