Méthode de comparaison | Contenu |
---|---|
equals | Comparaison des zones de mémoire |
== | Comparaison des valeurs |
public class MyApp {
public static void main(String[] args) {
String s1 = "ab"; //Stocker la zone de mémoire
String s2 = "ab"; //Stocker la zone de mémoire (même zone que ci-dessus)
if(s1.equals(s2)) { //Comparez si le contenu est le même
System.out.println("same1 equals");
}
if(s1 == s2) { //Comparaison des types de données de base
System.out.println("same2 ==");
}
//Générer un objet string (avec la méthode equals)
String ss1 = new String("ab"); //Stockage de la zone de mémoire
String ss2 = new String("ab"); //Stockage de la zone de mémoire (créer une autre zone à partir de ce qui précède)
//Comparaison des types de données de base
if(ss1 == ss2) { //Puisque la zone de mémoire est comparée, elle sera fausse et ne sera pas exécutée.
System.out.println("same3 ==objet");
}
//Comparaison du contenu des données
if(ss1.equals(ss2)) {
System.out.println("même4 est égal à un objet"); //Exécuté car la zone mémoire est différente mais la valeur est la même
}
}
}
same1 equals
same2 ==
même4 est égal à un objet
Dans la chaîne de caractères qui est à l'origine un type de référence, l'emplacement de la zone de mémoire de la destination de référence est stocké dans la variable.
Et, dans l'exemple, la même chaîne de caractères ʻab` est affectée à s1 et s2, mais l'emplacement de la zone mémoire est entré dans s1 et la même chaîne de caractères est affectée à s2, donc la même mémoire Il semble que l'emplacement de la zone sera inclus. En d'autres termes
String s1 = "ab";
String s2 = s1;
Même sens que? devenir.
Quand je l'essaye
same1 equals
same2 ==
même4 est égal à un objet
String s1 = "ab";
String s2 = s1;
s2 = "cd";
Que se passe-t-il si vous faites ... Facile à comprendre
System.out.println("s1: " + s1);
System.out.println("s2: " + s2);
Et courir.
s1: ab
s2: cd
même4 est égal à un objet
Seul s2 a été modifié et n'est pas reflété dans s1.
En parlant de cela, la chaîne de caractères se comporte de la même manière que le type de données de base, et elle se comporte de la même manière que le type int. .. ..
Cela signifie-t-il que la même destination de référence est créée alors que les valeurs sont les mêmes et qu'une nouvelle zone de mémoire est créée lorsque les valeurs sont mises à jour?
C'est compliqué, mais j'ai essayé et compris à nouveau.
S'il s'agit d'un tableau, les deux valeurs seront mises à jour. Revoir la revue!
Recommended Posts