Estaba estudiando mi Java para prepararme para un examen y encontré una especie de problema con los valores int/Integer no inicializados.Uninitialized int vs Integer
class A
{
int x;
Integer y;
static int z;
static Integer z2;
public A(){}
}
Digamos que inicializo un objeto de la Clase A. A a = new A();
He intentado esto en un compilador y de recibir los resultados
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
Por otra parte, he intentado algunas comparaciones más sin inicializar int/número entero en un panel de interacciones para ver si iba a obtener resultados diferentes si mi x, y no eran variables de instancia de clase como están arriba.
int x;
Integer y;
x == 0; true
x == null; Static Error: Bad type in comparison expression
y == 0; java.lang.NullPointerException
y == null; true
Sin embargo, mis reclamos profesor en una conferencia que los valores deben ser como sigue:
x == 0; Uninitialized
x == null; Undefined
y == 0; java.lang.NullPointerException
y == null; Uninitialized
Ahora bien, no quiero poner en duda el que escribe el examen, pero que X == 0 yy == valor de verdad nulo es correcto? Una explicación de por qué sería muy apreciada, gracias.
Si se pregunta quién es más creíble al saber qué hará el compilador: el compilador o su profesor ... la respuesta es el compilador. –