The difference between "==" and equals() in Java
Regarding the relational operator "==", "Java Programming Thoughts" describes it like this: "The relational operator generates a boolean As a result, they compute relationships between the values of their operands". The "value" of the operand here deserves our attention. For the 8 basic data types (boolean, byte, char, short, int, float, double, long), their variables directly store "values". Therefore, when we use "==" to compare variables of basic data types, the actual comparison is the value stored in the variable, for example:
public static void main(String[] args) { int a = 5, b = 5; System.out.println(a == b); }
Obviously, the program will output: true. But what about the following code?
public static void main(String[] args) { Integer c = new Integer(5), d = new Integer(5); System.out.println(c == d); }
We ran the program and found that the output was: false. This is because Integer is not a basic data type in Java. Its variables c and d are called references pointing to objects in Java. The "value" they store is the address of the object in memory, not the value "5" itself. Therefore, c and d actually store the addresses of two Integer objects whose value is both "5". These two objects are not in the same memory space, and the result of the "==" comparison is naturally false.
So what does the equals() method compare? equals() is a method defined in the base class Object. In the Object class, the equals() method is defined as:
public boolean equals(Object obj) { return (this == obj); }
This is equivalent to "==". In fact, the significance of the equals() method lies in rewriting, otherwise the call to equals() is meaningless. For example, the Integer class inherited from Object overrides the equals() method:
public boolean equals(Object obj) { if (obj instanceof Integer) { return value == ((Integer)obj).intValue(); } return false; }
The meaning of this method is to compare value values, then if we compare two Integer objects with the same value call equals() for comparison:
public static void main(String[] args) { Integer c = new Integer(5), d = new Integer(5); System.out.println(c.equals(d)); }
The result is true.
Thank you for reading, I hope it can help you, thank you for your support of this site!
For more detailed articles on the difference between "==" and equals() in Java, please pay attention to the PHP Chinese website!