¿Java vacío, nulo, en blanco todavía estúpidamente confuso?

Cuando escribo código, a menudo me encuentro con situaciones en las que se juzga vacío, nulo y en blanco. Estos conceptos pueden parecer similares, pero tienen diferentes significados y usos. Este artículo presentará las diferencias entre estos tres conceptos y analizará cómo emitir juicios en escenarios específicos.

vacío

Vacío hace referencia a una cadena cuya longitud es 0/el objeto de la colección Java no tiene elementos Puede usar el método isempty() para determinar si una cadena está vacía. También puede usar el método isEmpty() para determinar si un elemento de colección de Java está vacío.

Por ejemplo:

public class Demo {

    public static void main(String[] args) {

        String str = "";

        if (str.isEmpty()) {

            System.out.println("This string is empty");

        }

    }

}

El código anterior generará "Esta cadena está vacía" porque la variable str es una cadena vacía.

Además, un error común es pensar que una cadena que contiene espacios o múltiples espacios está vacía, lo cual es incorrecto. Por ejemplo:

public class Demo {

    public static void main(String[] args) {

        String str = "  ";

        if (str.isEmpty()) {

            System.out.println("This string is empty");

        }

    }

}

El código anterior no generará nada, porque la variable str no es una cadena vacía, sino una cadena que contiene dos espacios.

nulo

null indica que un objeto no existe. Si una variable de referencia no se inicializa o se le asigna explícitamente un valor nulo, entonces el valor de la variable es nulo. Por ejemplo:

public class Demo {

    public static void main(String[] args) {

        String str = null;

        if (str == null) {

            System.out.println("This string is null");

        }

    }

}

El código anterior generará "Esta cadena es nula" porque el valor de la variable str es nulo.

Cabe señalar que para los tipos de datos básicos (como int, double, etc.), no se les puede asignar un valor nulo . Si intenta asignar un tipo de datos primitivo a nulo, se producirá un error de compilación.

blanco

En blanco se refiere a una cadena cuya longitud es mayor que 0 pero que solo contiene espacios (incluidos tabuladores y saltos de línea). En Java, puede usar el método isblank() para determinar si una cadena está en blanco. Por ejemplo:

public class Demo {

    public static void main(String[] args) {

        String str = "  ";

        if (str.isBlank()) {

            System.out.println("This string is blank");

        }

    }

}

El código anterior generará "Esta cadena está en blanco" porque la variable str contiene dos espacios en blanco, y este es el único contenido de esta cadena.

Cabe señalar que no existe un método isblank() antes de Java 11 . Si está utilizando una versión anterior de Java, debe usar el método trim() para eliminar espacios de ambos extremos de la cadena y verificar si el resultado está vacío. Por ejemplo:

public class Demo {

    public static void main(String[] args) {

        String str = "  ";

        if (str.trim().isEmpty()) {

            System.out.println("This string is blank");

        }

    }

}

El código anterior también generará "Esta cadena está en blanco", porque la variable str se convierte en una cadena vacía después de ser procesada por el método trim().

resumen

Los tres conceptos de vacío, nulo y espacio en blanco tienen diferencias obvias:

Vacío significa que una cadena tiene una longitud de 0 y no hay elementos en la colección de Java.

null indica que un objeto no existe;

en blanco significa una cadena cuya longitud es mayor que 0 pero que solo contiene espacios.

Para comprender mejor estos conceptos y diferencias, aquí hay un código de muestra.

public class Demo {
    public static void main(String[] args) {
        String emptyStr = "";
        String nullStr = null;
        String blankStr = "  ";

        // 判断empty字符串
        if (emptyStr.isEmpty()) {
            System.out.println("This string is empty");
        }

        // 判断null字符串
        if (nullStr == null) {
            System.out.println("This string is null");
        }

        // 判断blank字符串
        if (blankStr.isBlank()) { // 注意: Java 11之前是没有isblank()方法的
            System.out.println("This string is blank");
        }
    }
}

El código anterior generará "Esta cadena está vacía" y "Esta cadena está en blanco" porque la variable cadena vacía es una cadena vacía y la variable cadena en blanco contiene dos espacios.

Cómo juzgar la colección vacía de Java

La lista esta vacía

El método isEmpty() es un método general que se puede usar para todas las clases que implementan la interfaz java.util.Collection (como List, Set, etc.). Devuelve verdadero si no hay elementos en la colección; de lo contrario, devuelve falso.

import java.util.ArrayList;
import java.util.List;

public class Demo {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        System.out.println(list.isEmpty()); // 输出 true

        list.add("apple");
        System.out.println(list.isEmpty()); // 输出 false
    }
}

El código anterior crea una ArrayList vacía y verifica si está vacía usando el método isEmpty(). Luego se agrega un elemento a la lista, que se vuelve a verificar usando el método isEmpty(). La primera salida es verdadera porque no hay elementos en la lista; la segunda salida es falsa porque hay un elemento en la lista.

el mapa esta vacio

Se puede juzgar si el mapa está vacío de las siguientes maneras:

1. Use el método isEmpty(): Map proporciona un método isEmpty(), que devuelve verdadero si no hay una relación de mapeo en Map.

import java.util.HashMap;
import java.util.Map;

public class Demo {
    public static void main(String[] args) {
        Map<String, String> map = new HashMap<>();
        System.out.println(map.isEmpty()); // 输出 true

        map.put("key", "value");
        System.out.println(map.isEmpty()); // 输出 false
    }
}

 

2. Determinar el tamaño del Mapa: Utilice el método size() para obtener el número de pares clave-valor en el Mapa, si es 0, significa que el Mapa está vacío.

import java.util.HashMap;
import java.util.Map;

public class Demo {
    public static void main(String[] args) {
        Map<String, String> map = new HashMap<>();
        System.out.println(map.size() == 0); // 输出 true

        map.put("key", "value");
        System.out.println(map.size() == 0); // 输出 false
    }
}

 

3. Determine si el conjunto de claves en el mapa está vacío: use el método keySet() para obtener el conjunto de todas las claves en el mapa y luego determine si el conjunto está vacío.

import java.util.HashMap;
import java.util.Map;

public class Demo {
    public static void main(String[] args) {
        Map<String, String> map = new HashMap<>();
        System.out.println(map.keySet().isEmpty()); // 输出 true

        map.put("key", "value");
        System.out.println(map.keySet().isEmpty()); // 输出 false
    }
}

Cabe señalar que los tres métodos anteriores pueden determinar si el mapa está vacío, pero se recomienda elegir el método más adecuado según la situación real. Si solo necesita saber si el mapa está vacío, use el método isEmpty() directamente; si necesita realizar otras operaciones (como recorrido, eliminación, etc.), es posible que deba obtener el tamaño o la colección de claves del Mapa.

Supongo que te gusta

Origin blog.csdn.net/xijinno1/article/details/132123472
Recomendado
Clasificación