Java's array initialization syntax differs depending on whether it's used in a declaration or an assignment.
When declaring an array, array literals can be used to initialize its elements:
AClass[] array = {object1, object2};
Outside a declaration, arrays can be initialized using the new operator, followed by the element count and subsequent assignments:
AClass[] array = new AClass[2]; array[0] = object1; array[1] = object2;
However, attempting to assign an array literal to a non-declared array variable is prohibited:
AClass[] array; ... array = {object1, object2}; // Blocked by Java
This restriction is imposed by Java for reasons that may not be immediately apparent.
As a workaround, the following syntax can be used:
AClass[] array; ... array = new AClass[]{object1, object2};
This approach combines the array creation and initialization into a single statement while adhering to Java's syntax rules.
For example, consider the following code snippet:
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; } } }
Without the workaround, the code would require additional statements to initialize tempTab before assigning it to tab.
The above is the detailed content of How Does Java's Array Assignment Syntax Differ Inside and Outside of Declarations?. For more information, please follow other related articles on the PHP Chinese website!