Maison >Java >javaDidacticiel >En quoi la syntaxe d'affectation de tableau de Java diffère-t-elle à l'intérieur et à l'extérieur des déclarations ?

En quoi la syntaxe d'affectation de tableau de Java diffère-t-elle à l'intérieur et à l'extérieur des déclarations ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-30 03:10:13230parcourir

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

Syntaxe d'affectation de tableau en dehors des déclarations

La syntaxe d'initialisation de tableau de Java diffère selon qu'elle est utilisée dans une déclaration ou une affectation.

Initialisation avec Array Littéraux

Lors de la déclaration d'un tableau, les littéraux du tableau peuvent être utilisés pour initialiser ses éléments :

AClass[] array = {object1, object2};

Initialisation avec le nouvel opérateur

En dehors d'une déclaration, les tableaux peuvent être initialisés à l'aide de l'opérateur new, suivi du nombre d'éléments et des affectations ultérieures :

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

Restrictions de syntaxe : attribution de littéraux de tableau à des tableaux non déclarés

Cependant, il est interdit de tenter d'attribuer un littéral de tableau à une variable de tableau non déclarée :

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

Cette restriction est imposée par Java pour des raisons qui peuvent ne pas être immédiatement apparentes.

Solution de contournement : utiliser new Opérateur avec des littéraux de tableau

Comme solution de contournement, la syntaxe suivante peut être utilisée :

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

Cette approche combine la création et l'initialisation du tableau en une seule instruction tout en respectant les règles de syntaxe de Java.

Exemple

Par exemple, considérons l'extrait de code suivant :

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

Sans la solution de contournement , le code nécessiterait des instructions supplémentaires pour initialiser tempTab avant de l'attribuer à tab.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn