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
Freigeben: 2024-12-30 03:10:13
Original
216 Leute haben es durchsucht

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};
Nach dem Login kopieren

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;
Nach dem Login kopieren

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
Nach dem Login kopieren

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};
Nach dem Login kopieren

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;
        }
    }
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage