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
Libérer: 2024-12-30 03:10:13
original
215 Les gens l'ont consulté

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};
Copier après la connexion

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;
Copier après la connexion

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
Copier après la connexion

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};
Copier après la connexion

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;
        }
    }
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal