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'?

25
demandé sur ashwinsakthi 2012-08-30 15:14:44

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.

15
répondu waldyr.ar 2012-08-30 12:11:25

\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.

5
répondu Ridcully 2012-08-30 11:18:56

'\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.

5
répondu RossC 2012-08-30 11:24:52

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 :)

1
répondu SiB 2012-08-30 11:17:12