Obj
彼のコンストラクターにあるクラスを持っているSystem.out.println("Hello world!") ;
このクラスの配列は、-を使用して作成しますが、Obj[] objArray = new Obj[10] ;
何も出力されません。つまり、-のインスタンスはObj
呼び出されていません。そのような配列を作成する方法はありますが、インスタンスを使用して、forループで作成する以外に方法はありますか?
さて、forループを使用する以外の方法を知りたいので、これを行うことができます:-
Obj[] objArray = {new Obj(), new Obj(), new Obj()};
ここで何が起こるかというと、配列要素を使用して配列参照を直接初期化しているということです。これで、実際の配列オブジェクトのタイプは、LHSの配列参照のタイプから推測されます。
したがって、その宣言を使用して、サイズ3(上記の場合)の配列が作成され、配列内の各インデックスは、指定された順序でinstance
ofObj
クラスで初期化されます。
私が提案するより良い方法は、を使用することですArrayList
。この場合、forループなしでdouble-braces initialization
初期化する必要があります。List
さらに、いつでも新しい要素を追加できるという利点があります。dynamically increasing
配列として。
List<Object> list = new ArrayList<Object>() {
{
add(new Obj());
add(new Obj());
add(new Obj());
}
}; // Note the semi-colon here.
list.add(new Obj()); // Add another element here.
これまでの回答は適切で役に立ちます。私はあなたに思い出させるためにここにいます
Obj[] objArray = new Obj[10];
Arrays.fill(objArray, new Obj());
ただし、これは配列のすべての要素に (新しい Obj() への) 1 つの参照のみを割り当てます。
Obj[] objArray = new Obj[10] ;
実際の「Obj」オブジェクトを指す参照の配列のみを作成します。
しかし、あなたの場合、実際の Obj オブジェクトは作成されません。
for (int i = 0; i < objArray.length; i++) {
objArray[i] = new Obj();
}
上記を行うと、目的のものが印刷されます。
最後に、すべてのSystem.out.println(Arrays.deepToString(objArray))
印刷を行いますtoString()
Obj
Obj[] objArray = new Obj[10] ;
10 個の Objs を保持できる配列を作成するだけです。Objs を配列に配置するには、Rohit のアプローチを使用するか、単純なfor
ループを記述して配列エントリを一度に 1 つずつ初期化する必要があります。
for (int i = 0; i < 10; i++) {
objArray[i] = new Obj();
}
または、for ループなし:
int i = 0;
while (i < 10) {
objArray[i] = new Obj();
i++;
}