Heim >Java >javaLernprogramm >Wie unterscheidet sich die Array-Zuweisungssyntax von Java innerhalb und außerhalb von Deklarationen?

Wie unterscheidet sich die Array-Zuweisungssyntax von Java innerhalb und außerhalb von Deklarationen?

Barbara Streisand
Barbara StreisandOriginal
2024-12-30 03:10:13235Durchsuche

How Does Java's Array Assignment Syntax Differ Inside and Outside of Declarations?

Array-Zuweisungssyntax außerhalb von Deklarationen

Die Array-Initialisierungssyntax von Java unterscheidet sich je nachdem, ob sie in einer Deklaration oder einer Zuweisung verwendet wird.

Initialisierung mit Array Literale

Bei der Deklaration eines Arrays können Array-Literale verwendet werden, um es zu initialisieren Elemente:

AClass[] array = {object1, object2};

Initialisierung mit dem neuen Operator

Außerhalb einer Deklaration können Arrays mit dem neuen Operator initialisiert werden, gefolgt von der Elementanzahl und nachfolgenden Zuweisungen:

AClass[] array = new AClass[2];
array[0] = object1;
array[1] = object2;

Syntaxeinschränkungen: Zuweisen von Array-Literalen zu nicht deklarierten Arrays

Es wird jedoch versucht, eine Zuweisung vorzunehmen Ein Array-Literal für eine nicht deklarierte Array-Variable ist verboten:

AClass[] array;
...
array = {object1, object2}; // Blocked by Java

Diese Einschränkung wird von Java aus Gründen auferlegt, die möglicherweise nicht sofort ersichtlich sind.

Problemumgehung: Verwendung eines neuen Operators mit Array Literale

Als Workaround kann die folgende Syntax verwendet werden:

AClass[] array;
...
array = new AClass[]{object1, object2};

Dieser Ansatz kombiniert die Array-Erstellung und -Initialisierung in eine einzige Anweisung unter Einhaltung der Java-Syntaxregeln.

Beispiel

Betrachten Sie beispielsweise den folgenden Codeausschnitt:

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;
        }
    }
}

Ohne die Problemumgehung würde der Code Folgendes erfordern zusätzliche Anweisungen zum Initialisieren von tempTab, bevor es tab zugewiesen wird.

Das obige ist der detaillierte Inhalt vonWie unterscheidet sich die Array-Zuweisungssyntax von Java innerhalb und außerhalb von Deklarationen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn