1. Cadenas == e iguales()
En el juicio de igualdad de cadenas, == juzga si las direcciones son las mismas y igual () juzga si los valores de los caracteres son los mismos. La mayoría de las veces los resultados de == e igual() son los mismos. Esto se debe a que el objeto String está en modo inmutable. Si no crea explícitamente un nuevo objeto String, el valor predeterminado de Java para guardar el objeto String es colocar el objeto String recién generado en un búfer y luego determinar el búfer cada vez. este objeto ya existe, si es así, entonces el objeto String con el mismo valor de carácter creado más tarde también apuntará a la dirección donde se creó originalmente el objeto de valor de carácter. Es decir, cuando los valores de los caracteres son los mismos, la geología también es la misma en la mayoría de los casos. == tiene el mismo efecto que igual(). Sin embargo, cuando el objeto se genera mediante str = new String("abc") en lugar de asignarlo directamente como str = "abc", o después de algún procesamiento de conexión de cadena, o se genera a través de objetos como StringBuffer, se abrirán otros nuevos en el memoria. Para las direcciones, los resultados de == e igual () son diferentes en este momento.
¿Es un poco complicado? Aquí necesita algunos conocimientos sobre memoria, pila y almacenamiento de objetos. No quiero insistir en este tema. Si no lo comprende, recuerde que si desea determinar si los valores de caracteres de dos cadenas son iguales y no hay otros requisitos, use igual () en lugar de ==. ==, creo que cuando lo necesites, lo entenderás de forma natural. De hecho, para juzgar cadenas, rara vez necesitamos usar ==.
2. Acerca de str.equal("abc") y "abc".equal(str)
Parece haber mucho debate sobre esto. Escribir la primera constante al final puede estar en consonancia con los hábitos de la mayoría de las personas y con nuestro pensamiento lógico. Pero se necesita un juicio más para determinar si str es nulo. De lo contrario, puede ocurrir una excepción aquí. Esta última forma de redacción no requiere mayor juicio sobre si es nula. En lo que respecta a mis preferencias personales, prefiero la última forma de escribir.
3. Acerca de nulo de cadena
/**
* Pruebe la situación cuando la cadena de Java es nula
* fecha de creación: 2009-6-3
* autor:Administrador
*
*/
prueba de vacío estático públicoNull(){
Cadena a= nulo,b = nulo,c="jeje";
System.out.println(a == nulo);
System.out.println(a+b+c);
}
Resultado de la ejecución del método:
verdadero
nullnull jaja Entonces todos deben prestar atención al realizar operaciones de fusión de cadenas, no olviden verificar si hay nulos, de lo contrario, ¡el resultado no será muy satisfactorio!