J'étais en train d'étudier mon Java en préparation d'un examen et j'ai rencontré une sorte de problème avec des valeurs int/Integer non initialisées. Supposons que j'initialise un objet de la classe A. A a = new A();Non initialisé int vs entier
class A
{
int x;
Integer y;
static int z;
static Integer z2;
public A(){}
}
J'ai essayé cela dans un compilateur et a obtenu les résultats
a.x == 0; true
a.x == null; Static Error: Bad type in comparison expression
a.y == 0; java.lang.NullPointerException
a.y == null; true
a.z == 0; true
a.z == null; Static Error: Bad type in comparison expression
a.z2 == 0; NullPointerException
a.z2 == null; true
De plus, j'ai essayé quelques plus initialisées comparaisons int/interger dans un volet interactions pour voir si j'obtenir des résultats différents si mon x, y n'étaient pas des variables d'instance de classe comme elles sont ci-dessus.
int x;
Integer y;
x == 0; true
x == null; Static Error: Bad type in comparison expression
y == 0; java.lang.NullPointerException
y == null; true
Cependant, mes demandes de professeur dans une conférence que les valeurs doivent être les suivantes:
x == 0; Uninitialized
x == null; Undefined
y == 0; java.lang.NullPointerException
y == null; Uninitialized
Maintenant, je ne veux pas douter celui qui écrit l'examen, mais qui x == 0 et y == null la valeur de vérité est correcte? Une explication sur pourquoi serait très appréciée, merci.
Si vous vous demandez qui est le plus crédible à savoir ce que le compilateur va faire: le compilateur ou votre professeur ... la réponse est le compilateur. –