1. Chaîne == et égal()
Dans le jugement d'égalité des chaînes, == juge si les adresses sont les mêmes et equal() juge si les valeurs des caractères sont les mêmes. La plupart du temps, les résultats de == et égal() sont les mêmes. En effet, l'objet String est en mode immuable. Si vous ne créez pas explicitement un nouvel objet String, la valeur par défaut de Java pour enregistrer l'objet String consiste à placer l'objet String nouvellement généré dans un tampon, puis à déterminer le tampon à chaque fois. cet objet existe déjà, si c'est le cas, alors l'objet String avec la même valeur de caractère créé ultérieurement pointera également vers l'adresse où l'objet de valeur de caractère a été créé à l'origine. C'est-à-dire que lorsque les valeurs des caractères sont les mêmes, la géologie est également la même dans la plupart des cas. == a le même effet que égal(). Cependant, lorsque l'objet est généré par str = new String("abc") au lieu d'être directement affecté comme str = "abc", ou après un traitement de connexion de chaîne, ou généré via des objets tels que StringBuffer, de nouveaux seront ouverts dans le mémoire Pour les adresses, les résultats de == et égal() sont différents à ce moment.
Est-ce un peu compliqué ? Ici, vous avez besoin d'une certaine compréhension de la mémoire, de la pile et du stockage d'objets. Je ne veux pas m'attarder sur cette question. Si vous ne comprenez pas, rappelez-vous simplement que si vous souhaitez déterminer si les valeurs de caractères de deux chaînes sont égales et qu'il n'y a pas d'autres exigences, veuillez utiliser equal() au lieu de == Quant au moment où vous devez l'utiliser. ==, je pense que lorsque vous en aurez besoin, vous le comprendrez naturellement. En fait, pour le jugement de chaînes, nous avons rarement besoin d'utiliser ==.
2. À propos de str.equal("abc") et "abc".equal(str)
Il semble y avoir beaucoup de débats à ce sujet. Écrire la première constante à la fin peut être conforme aux habitudes de la plupart des gens et à notre pensée logique. Mais un jugement supplémentaire est nécessaire pour déterminer si str est nulle. Sinon, une exception peut se produire ici. Cette dernière façon d’écrire ne nécessite pas plus de jugement quant à savoir si elle est nulle. En ce qui concerne mes préférences personnelles, je préfère cette dernière façon d’écrire.
3. À propos de null de String
/**
* Testez la situation lorsque la chaîne de Java est nulle
* date de création : 2009-6-3
* auteur : Administrateur
*
*/
public static void testNull(){
Chaîne a= null,b = null,c="hehe";
System.out.println(a == null);
System.out.println(a+b+c);
}
Résultat de l'exécution de la méthode :
vrai
nullnull haha Donc, tout le monde devrait faire attention lors des opérations de fusion de chaînes, n'oubliez pas de vérifier null, sinon le résultat ne sera pas très satisfaisant !