1. String == e igual()
No julgamento de igualdade de strings, == julga se os endereços são iguais e equal() julga se os valores dos caracteres são iguais. Na maioria das vezes, os resultados de == e equal() são os mesmos. Isso ocorre porque o objeto String está no modo imutável. Se você não criar explicitamente um novo objeto String, o padrão do Java para salvar o objeto String é colocar o objeto String recém-gerado em um buffer e, em seguida, determinar o buffer a cada vez. este objeto já existe, se sim, então o objeto String com o mesmo valor de caractere criado posteriormente também apontará para o endereço onde o objeto de valor de caractere foi originalmente criado. Ou seja, quando os valores dos caracteres são iguais, a geologia também é a mesma na maioria dos casos. == tem o mesmo efeito que igual(). Porém, quando o objeto é gerado por str = new String("abc") em vez de atribuído diretamente como str = "abc", ou após algum processamento de conexão de string, ou gerado através de objetos como StringBuffer, novos serão abertos no memória Para endereços, os resultados de == e equal() são diferentes neste momento.
É um pouco complicado? Aqui você precisa de algum conhecimento de memória, pilha e armazenamento de objetos. Não quero insistir neste assunto. Se você não entende, lembre-se de que se quiser determinar se os valores dos caracteres de duas strings são iguais e não há outros requisitos, use equal() em vez de ==. ==, acho que quando você precisar, você entenderá naturalmente. Na verdade, para julgamento de strings, raramente precisamos usar ==.
2. Sobre str.equal("abc") e "abc".equal(str)
Parece haver muito debate sobre isso. Escrever a primeira constante no final pode estar de acordo com os hábitos da maioria das pessoas e com o nosso pensamento lógico. Mas é necessário mais um julgamento para determinar se str é nulo. Caso contrário, uma exceção poderá ocorrer aqui. A última forma de escrever não requer mais julgamento sobre se é nula. No que diz respeito à minha preferência pessoal, prefiro a última forma de escrever.
3. Sobre nulo de String
/**
* Teste a situação quando a String do Java é nula
* data de criação: 3/6/2009
*autor:Administrador
*
*/
public static void testNull(){
String a= null,b = null,c="hehe";
System.out.println(a == nulo);
System.out.println(a+b+c);
}
Resultado da execução do método:
verdadeiro
nullnull haha Portanto, todos devem prestar atenção ao fazer operações de mesclagem de strings, não se esqueça de verificar se há nulo, caso contrário o resultado não será muito satisfatório!