First we write a piece of code to compare two objects
public class test {
Public Static void main (string [] args) {
String name2 = new string ("tom"); // Create name1 assignment TOM
String name2 = new string ("tom"); // Create name2 assignment TOM
System.out.println (name1 == name2); // Use "==" to determine whether the two objects are the same
System.out.println (name1.equals (name2)); // Use the equals method to determine whether the same
}
}
We all know that when “==” to determine the two reference type objects, it directly judges the address of the object. That is to say, different objects are judged by “==”. Equals are different, the output here is
Obviously the EQUALS method is not just a look at the address, so how does it execute it?
Public Boolean Equals (Object Anobject) {{
if (this == AnObject) {// "==" to determine whether the address is the same
Return true;
}
if (AnObject Instanceof String) {// If the comparison object is String
String anotherString = (String) AnObject; // Because the anObject parameter points to the name2 object
// name2 is the string type object, so you can transform
int n = value.length;
// Because Value is a global variable, it is essentially this.value.length
// name1 call equals, this is name1, name1 is global variable, this.value.length is the character of name1.
if (n == Anotherstring.value.length) {
// Anothertring is pointing to name2, anotherString.value.Length represents how many characters have.
// Two string is the same, the length must be the same, so n == Anothertring.value.length is very important
char v1 [] = value; // array consisting of name1 character
char v2 [] = Anothertring.value; // array consisting of name2 character
int i = 0;
While (n-! = 0) {// Comparison of characters one by one
if (v1 [i]! = v2 [i]) // As long as one comparison fails, two string must be different
Return false;
i ++;
// This code actually creates a string that is exactly the same as the comparison object, and the characters are compared with the characters
// The elephant is compared. If all the same, the two objects are the same, otherwise different
}
Return true;
}
}
Return false;
}
By analyzing, we can find that the Equals method actually uses “==” to first judge the address. When the address is different, they will not immediately think that the two objects are different. Instead, when the object is string type type Compare their characters one by one, so we can use the EQUALS method at the same time when judging a few sentences to avoid errors brought by “==” judgment.