Concatenando strings nulas em Java
Em Java, concatenar strings nulas pode parecer contraintuitivo, levando à expectativa de uma NullPointerException. No entanto, esta operação é executada com sucesso, resultando em uma string contendo "null" seguida pela string concatenada.
Por que isso funciona?
De acordo com a especificação da linguagem Java (JLS) 8, § 15.18.1, referências nulas são explicitamente convertidas na string "null" durante a concatenação de strings. Essa conversão ocorre antes de qualquer chamada de método, garantindo que NullPointerExceptions não sejam lançadas.
Como funciona?
O compilador Java transforma a expressão de concatenação em uma sequência equivalente de chamadas de método. No caso de s = s "hello", o compilador gera código semelhante a:
s = new StringBuilder(String.valueOf(s)).append("hello").toString();
O método append de StringBuilder lida com argumentos nulos normalmente. Se null for o primeiro argumento, String.valueOf() é invocado para convertê-lo em uma string.
Alternativamente, a expressão s = "hello" s seria transformada em:
s = new StringBuilder("hello").append(s).toString();
Nesse caso, o método append toma null como o segundo argumento e o delega para String.valueOf().
Nota:
Os compiladores Java podem otimizar a concatenação de strings de maneira diferente para melhorar o desempenho, usando técnicas como o pooling do StringBuilder. Portanto, o código equivalente exato gerado pode variar dependendo do compilador utilizado.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3