web-dev-qa-db-fra.com

Quelle est la différence entre un tableau null et un tableau vide?

Si les éléments individuels d'un tableau int ne sont pas initialisés, qu'est-ce qui y est stocké par défaut? J'ai apparemment trouvé qu'il y a quelque chose comme un tableau vide ou un tableau nul. Quelle est la différence et laquelle s'applique à ma première question?

13
user4360892

Techniquement, il n’existe pas de tableau null; mais comme les tableaux sont des objets, les types de tableau sont des types de référence (c'est-à-dire que les variables de tableau ne contiennent que references aux tableaux), ce qui signifie qu'une variable de tableau peut être null plutôt que de pointer vers un tableau:

int[] notAnArray = null;

Un tableau empty est un tableau de longueur zéro; il n'y a pas d'éléments:

int[] emptyArray = new int[0];

(et never peut avoir des éléments, car la longueur d'un tableau ne change jamais après sa création).

Lorsque vous créez un tableau non -empty sans spécifier de valeur pour ses éléments, leur valeur par défaut est égale à zéro: 0 pour un tableau entier, null pour un tableau de type objet, etc. donc ça:

int[] arrayOfThreeZeroes = new int[3];

est le même que celui-ci:

int[] arrayOfThreeZeroes = { 0, 0, 0 };

(bien que ces valeurs puissent être réaffectées ultérieurement; la longueur du tableau ne peut pas changer, mais ses éléments peuvent changer).

21
ruakh

Par défaut, Java a initialisé le tableau en fonction du type déclaré. C'est int alors il est initialisé à 0. S'il est de type object comme array of object alors il est initialisé à null.

1
Jigar

Si les éléments individuels d'un tableau int ne sont pas initialisés, qu'est-ce qui y est stocké par défaut?

0

tableau vide est un tableau avec 0 éléments

Je n'ai pas entendu parler du tableau null, mais il s'agit probablement d'un tableau avec une référence d'élément non nulle qui est null

0
Jigar Joshi

Un tableau a ses membres initialisés à leurs valeurs par défaut. Pour int, la valeur par défaut est 0. Pour une Object, c'est null. Un tableau null est un null Array Reference (car les tableaux sont des types de référence en Java).

JLS-4.12.5 Valeurs initiales des variables dit en partie

Pour le type int, la valeur par défaut est zéro, c'est-à-dire 0. 

et

Pour tous les types de référence (§4.3), la valeur par défaut est null.

0
Elliott Frisch