Java の配列初期化構文は、宣言で使用されるか代入で使用されるかによって異なります。
配列を宣言する場合、arrayリテラルを使用して要素を初期化できます。
AClass[] array = {object1, object2};
宣言の外では、配列は new 演算子を使用して初期化し、その後に要素数とその後の代入を行うことができます。 :
AClass[] array = new AClass[2]; array[0] = object1; array[1] = object2;
ただし、宣言されていない配列変数に配列リテラルを割り当てようとすることは禁止されています。
AClass[] array; ... array = {object1, object2}; // Blocked by Java
この制限は、すぐには明らかではない理由で Java によって課されています。
回避策として、次のようにします。次の構文を使用できます。
AClass[] array; ... array = new AClass[]{object1, object2};
このアプローチでは、Java の構文規則に従いながら、配列の作成と初期化を 1 つのステートメントに結合します。
たとえば、次のように考えます。次のコード スニペット:
public void selectedPointsToMove(cpVect coord) { if (tab == null) { if (arePointsClose(coord, point1, 10)) { cpVect[] tempTab = {point1}; tab = tempTab; } else if (arePointsClose(point2, coord, 10)) { cpVect[] tempTab = {point2}; tab = tempTab; } else { cpVect[] tempTab = {point1,point2}; tab = tempTab; } } }
回避策がなければ、コードには追加のステートメントが必要になります。 tempTab をタブに割り当てる前に初期化してください。
以上がJava の配列代入構文は宣言の内部と外部でどのように異なりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。