JavaとC++クラス配列の違い

C++のクラスの配列の宣言および値の設定の例は下記である。

TestClass[] array = new TestClass[10];
array[0].x = 10;

しかし、Javaで同じことをすると java.lang.NullPointerExceptionが発生する。

そのため、下記のように各配列の要素ごとにクラスを生成しなければならない。

TestClass[] array = new TestClass[10];

for (int i = 0; i < 10; i++) {
array[i] = new TestClass();
}
array[0].x = 10;

これなんでかと言いうと、
Javaにおける配列とは、オブジェクトの並びではなく、変数の並びだかららしい。
だから下記のようにプリミティブ型なら同じ文法でも問題ない。

int[] tmp = new int[3];
tmp[0] = 10;

参照型だから、配列の要素確保しただけでは要素はすべてnullだからダメとのこと。
結論:めんどいのでJavaでは基本的に、コレクションを使おう。