Comprendre la différence entre null et 'u000' en Java
j'ai lu dans un livre (Penser en Java par Bruce Eckel, 4e édition, page 47)null
est égal à 'u000'
. Et puis je me demandais ce que fait exactement 'u000'
signifient vraiment.
selon ma compréhension, nul n'était rien ou l'absence de quoi que ce soit. Et 'u000'
vient en contradiction avec cette définition.
quelqu'un Peut-il clarifier cette question à propos de null
et 'u000'
?
4 réponses
la spécification de langue est où null est défini, et il est dit
il y a aussi un type spécial null, le type de l'expression null, qui n'a pas de nom. Parce que le type nul n'a pas de nom, il est impossible de déclarer une variable du type nul ou de lancer vers le type nul. La référence nulle est la seule valeur possible d'une expression de type null. La référence nulle peut toujours être moulée à n'importe quel type de référence. En pratique, le programmeur peut ignorer la valeur nulle tapez et faites juste semblant que null est simplement un littéral spécial qui peut être de n'importe quel type de référence. --lien vers la documentation (Section 4.1)
et
le type nul a une valeur, la référence nulle, représentée par la lettre null, qui est formée à partir de caractères ASCII. Une lettre nulle est toujours de type nul. --lien vers la documentation (Section 2.3)
Plutôt un circulaire de sondage définition, mais la valeur de null
est le référence nulle lui-même - juste un autre pointeur. La valeur de la référence nulle n'est pas vraiment pertinente et dépend probablement de l'exécuteur, mais zéro ou une autre valeur qui ne peut pas être confondue avec une autre adresse d'objet est probable.
la Confusion peut être causée ici parce qu'il y a une valeur de caractère appelée caractère null valeur \u0000
. C'est la valeur par défaut pour le type char.
\u000
serait la représentation unicode d'un caractère avec le code ASCII 0, mais n'a rien à voir avec null
tel qu'utilisé par Java.
'\u0000' équivalent décimal est 00 L'équivalent en omble est NUL.
à Partir de Caractère dans la Javadoc: http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Character.html
static char MIN_VALUE
The constant value of this field is the smallest value of type char, '\u0000'.
C'est la valeur unicode, qui dans CHAR est équivalente à NULL, c'est-à-dire QU'elle est le caractère NULL, plutôt que d'être la lettre NULL.
null
est un littéral et vous pouvez voir les spécifications qui dit
dans la pratique vous pouvez simplement prétendre que c'est "simplement un littéral spécial qui peut être de n'importe quel type de référence".
comme @assylias l'a dit ce que vous avez lu n'était sûrement pas sorti de java :)