Donc je déclare et initialise un tableau int:
static final int UN = 0;
int[] arr = new int[size];
for (int i = 0; i < size; i++) {
arr[i] = UN;
}
Dis que je fais ça à la place ...
int[] arr = new int[5];
System.out.println(arr[0]);
... 0
imprimera en sortie standard. Aussi, si je fais ceci:
static final int UN = 0;
int[] arr = new int[5];
System.out.println(arr[0]==UN);
... true
imprimera en sortie standard. Alors, comment Java initialise-t-il mon tableau par défaut? Est-il prudent de supposer que l'initialisation par défaut définit les indices du tableau, 0
ce qui signifierait que je n'ai pas à parcourir le tableau et à l'initialiser?
Merci.
java
arrays
initialization
Hristo
la source
la source
Réponses:
Tout dans un programme Java non défini explicitement sur quelque chose par le programmeur, est initialisé à une valeur zéro.
null
.0
.0.0
false
.'\u0000'
(dont l'équivalent décimal est 0).Lorsque vous créez un tableau de quelque chose, toutes les entrées sont également mises à zéro. Ainsi, votre tableau contient cinq zéros juste après sa création par
new
.Remarque (basée sur les commentaires): La machine virtuelle Java n'est pas obligée de remettre à zéro la mémoire sous-jacente lors de l'allocation de variables locales (cela permet des opérations de pile efficaces si nécessaire) afin d'éviter les valeurs aléatoires, la spécification du langage Java nécessite l'initialisation des variables locales.
la source
À partir de la spécification du langage Java :
la source
null
.JLS dit clairement
Un initialiseur de tableau crée un tableau et fournit des valeurs initiales pour tous ses composants.
et ceci indépendamment du fait que le tableau soit une variable d'instance ou une variable locale ou une variable de classe.
Valeurs par défaut pour les types primitifs: docs
Pour les objets, les valeurs par défaut sont
null
.la source
Selon java,
la source
Thorbjørn Ravn Andersen a répondu pour la plupart des types de données. Puisqu'il y avait une discussion animée sur le tableau,
Citant la spécification jls http://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.12.5 "Le composant de tableau est initialisé avec une valeur par défaut lors de sa création"
Je pense que peu importe si le tableau est local ou une variable d'instance ou de classe, il sera avec des valeurs par défaut
la source
Chaque classe en Java a un constructeur (un constructeur est une méthode qui est appelée lorsqu'un nouvel objet est créé, qui initialise les champs des variables de classe). Ainsi, lorsque vous créez une instance de la classe, la méthode constructeur est appelée lors de la création de l'objet et toutes les valeurs de données sont initialisées à ce moment-là.
Pour un objet de type tableau entier, toutes les valeurs du tableau sont initialisées à 0 (zéro) dans la méthode constructeur. De même pour l'objet du tableau booléen, toutes les valeurs sont initialisées à false.
Java initialise donc le tableau en exécutant sa méthode de constructeur lors de la création de l'objet
la source
Java indique que la longueur par défaut d'un tableau JAVA au moment de l'initialisation sera de 10.
Mais la
size()
méthode renvoie le nombre d'éléments insérés dans le tableau, et puisque au moment de l'initialisation, si vous n'avez inséré aucun élément dans le tableau, elle renverra zéro.la source