Concatenar cadenas nulas en Java
En Java, concatenar cadenas nulas puede parecer contradictorio, lo que lleva a la expectativa de una excepción NullPointerException. Sin embargo, esta operación se ejecuta correctamente, lo que da como resultado una cadena que contiene "nulo" seguida de la cadena concatenada.
¿Por qué funciona esto?
De acuerdo con la especificación del lenguaje Java (JLS) 8, § 15.18.1, las referencias nulas se convierten explícitamente a la cadena "nula" durante la concatenación de cadenas. Esta conversión se produce antes de invocar cualquier método, lo que garantiza que no se generen NullPointerExceptions.
¿Cómo funciona?
El compilador de Java transforma la expresión de concatenación en una secuencia equivalente de llamadas a métodos. En el caso de s = s "hello", el compilador genera código similar a:
s = new StringBuilder(String.valueOf(s)).append("hello").toString();
El método append de StringBuilder maneja argumentos nulos con elegancia. Si nulo es el primer argumento, se invoca String.valueOf() para convertirlo en una cadena.
Alternativamente, la expresión s = "hello" s se transformaría en:
s = new StringBuilder("hello").append(s).toString();
En este caso, el método append toma nulo como segundo argumento y lo delega a String.valueOf().
Nota:
Los compiladores de Java pueden optimizar la concatenación de cadenas de manera diferente para mejorar el rendimiento, utilizando técnicas como la agrupación de StringBuilder. Por lo tanto, el código equivalente exacto generado puede variar según el compilador utilizado.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3