¿Qué es Null en Java?

En Java, la palabra Null significa que, una variable que está referenciando a cierto objeto, no encuentra dicho objeto. Es decir, que la variable está declarada pero, por el contrario, no se está referenciando a ningún objeto.

Null está fuertemente relacionado a java.lang.NullPointerException. Como es una clase en el paquete java.lang, se llama cuando se intenta realizar algunas operaciones con o sin null.

A continuación, os dejamos algunas características de Null en Java

Características de Null en Java

Null es Case sensitive

Se puede llegar a decir que null es literal en Java, ya que las palabras clave distinguen entre mayúsculas y minúsculas en java, por lo que no puede escribir NULL o 0.

public class Test
{
 public static void main (String[] args) throws java.lang.Exception
 {
 // error en tiempo de compilación: no se puede encontrar el símbolo 'NULL'
 Object obj = NULL; 
 
 //lo siguiente se ejecuta con éxito
 Object obj1 = null; 
 }
}

Salida:

error: cannot find symbol
 can't find symbol 'NULL'
                      ^
 variable NULL
 class Test
1 error

Valor de variable de referencia

Toda variable de referencia en Java tiene un valor predeterminado nulo.

public class Test
{
    private static Object obj; 
    public static void main(String args[])
    {
        // imprimira nulo;
        System.out.println("El valor del objeto obj es : " + obj);
    } 
}

Salida:

El valor del objeto obj es : null

Tipo de null

Null no es un objeto ni un tipo, es un valor especial, que se puede asignar a todo tipo de referencia y se puede castear null a cualquier tipo. A continuación se pueden observar algunos ejemplos:

// null se puede asignar a String
  String str = null; 
 
 // tambien puedes asignar null a Integer
 Integer itr = null; 
 
 // null también se puede asignar a Double
 Double dbl = null; 
     
 //null se puede castear a String
 String myStr = (String) null; 
 
 // también puede ser casteado a Integer
 Integer myItr = (Integer) null; 
 
 // si es posible, no hay error
 Double myDbl = (Double) null;

Autoboxing y unboxing

Mientras se ejecutan las operaciones de autoboxing y unboxing, el compilador indica un error de excepción Nullpointer, si se asigna un valor nulo al tipo de datos en recuadro primitivo.

public class Test
{
    public static void main (String[] args) throws java.lang.Exception
    {
            //Un número entero puede ser nulo, así que esto está bien
            Integer i = null;
             
            //Unboxing null a integer lanza NullpointerException
            int a = i;
    }
}

Salida:

Exception in thread "main" java.lang.NullPointerException
 at Test.main

Operador instanceof

El operador instanceof de Java se emplea para determinar si el objeto es una instancia del tipo especificado (clase, subclase o interfaz). Durante la ejecución, el resultado del operador instanceof es verdadero si el valor de la expresión no es nulo.

Esta importante propiedad hace que la operación instanceof, que lo hace útil para las verificaciones de conversión de tipo.

public class Test
{
    public static void main (String[] args) throws java.lang.Exception
    {
        Integer i = null;
        Integer j = 10;
             
        //imprime false
        System.out.println(i instanceof Integer);
         
        //Compila con exito
        System.out.println(j instanceof Integer);
    }
}

Salida:

false
true

Métodos estáticos vs no estáticos

No se puede llamar a un método no estático en una variable de referencia con valor nulo, arrojará NullPointerException, pero si se puede invocar al método estático con variables de referencia con valores nulos. 

Como los métodos estáticos están vinculados mediante el enlace estático, no lanzarán NullPointerException.

public class Test
{             
    public static void main(String args[])
    {
        Test obj= null;
        obj.staticMethod();
        obj.nonStaticMethod();                             
    }
     
    private static void staticMethod()
    {
        //Puede ser llamado por referencia nula
        System.out.println("metodo estatico, puede ser llamado por referencia nula");
         
    }
         
    private void nonStaticMethod()
    {
        //Can not be called by null reference
        System.out.print(" Metodo no estatico- ");
        System.out.println("no puede ser llamado por referencia nula");
         
    }
 
}

Salida:

Exception in thread "main" java.lang.NullPointerException
 at Test.main
metodo estatico, puede ser llamado por referencia nula

Uso de == y != con Null en Java

Emplear los operadores == y !=, puede ser muy útil en la comprobación de null con objetos en Java.

public class Test
{             
    public static void main(String args[])
    {
     
    //return true;
    System.out.println(null==null);
     
    //return false;
    System.out.println(null!=null);
         
    }
}

Salida:

true
false
¿Todavía no te has apuntado a nuestro Bootcamp?
Tenemos muchos cursos para ofrecerte y ¡TOTALMENTE GRATIS! Estos son algunos de ellos: