In general both equals() and “==” operator in Java are used to compare objects to check equality but here are some of the differences between the two:
- Main difference between .equals() method and == operator is that one is method and other is operator.
- We can use == operators for reference comparison (address comparison) and .equals() method for content comparison. In simple words, == checks if both objects point to the same memory location whereas .equals() evaluates to the comparison of values in the objects.
- If a class does not override the equals method, then by default it uses equals(Object o) method of the closest parent class that has overridden this method. See this for detail
- Coding Example:
// Java program to understand// the concept of == operatorpublicclassTest {publicstaticvoidmain(String[] args){String s1 =newString("HELLO");String s2 =newString("HELLO");System.out.println(s1 == s2);System.out.println(s1.equals(s2));}}chevron_rightfilter_noneOutput:
false true
Explanation: Here we are creating two objects namely s1 and s2.
- Both s1 and s2 refers to different objects.
- When we use == operator for s1 and s2 comparison then the result is false as both have different addresses in memory.
- Using equals, the result is true because its only comparing the values given in s1 and s2.
Let us understand both the operators in detail:
Equality operator(==)
We can apply equality operators for every primitive types including boolean type. we can also apply equality operators for object types.
// Java program to illustrate // == operator for compatible data // types class Test { public static void main(String[] args) { // integer-type System.out.println(10 == 20); // char-type System.out.println('a' == 'b'); // char and double type System.out.println('a' == 97.0); // boolean type System.out.println(true == true); } } |
Output:
false false true true
If we apply == for object types then, there should be compatibility between arguments types (either child to parent or parent to child or same type). Otherwise we will get compile time error.
// Java program to illustrate // == operator for incompatible data types class Test { public static void main(String[] args) { Thread t = new Thread(); Object o = new Object(); String s = new String("GEEKS"); System.out.println(t == o); System.out.println(o == s); // Uncomment to see error System.out.println(t==s); } } |
Output:
false false // error: incomparable types: Thread and String
.equals()
In Java, string equals() method compares the two given strings based on the data/content of the string. If all the contents of both the strings are same then it returns true. If all characters are not matched then it returns false.
public class Test { public static void main(String[] args) { Thread t1 = new Thread(); Thread t2 = new Thread(); Thread t3 = t1; String s1 = new String("GEEKS"); String s2 = new String("GEEKS"); System.out.println(t1 == t3); System.out.println(t1 == t2); System.out.println(s1 == s2); System.out.println(t1.equals(t2)); System.out.println(s1.equals(s2)); } } |
Output:
true false false false true
Explanation: Here we are using .equals method to check whether two objects contains the same data or not.
- In the above example, we are creating 3 Thread objects and 2 String objects.
- In the first comparison, we are checking that t1 == t3 or not. As we know that both t1 and t3 pointing to same object that’s why it returns true.
- In second comparison, we are using operator “==” for comparing the String Objects and not the contents of the objects. Here, both the objects are different and hence the outcome of this comparison is “False”
- When we are comparing 2 String objects by .equals() operator then we are checking that is both objects contains the same data or not.
- Both the objects contains the same String i.e. GEEKS that’s why it returns true.
This article is contributed by Bishal Kumar Dubey. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
Attention reader! Don’t stop learning now. Get hold of all the important Java and Collections concepts with the Fundamentals of Java and Java Collections Course at a student-friendly price and become industry ready.
Recommended Posts:
- Method Class | equals() Method in Java
- Java.util.Arrays.equals() in Java with Examples
- Overriding equals method in Java
- Calendar.equals() method in Java
- Java Long equals() method with Examples
- Character.equals() method in Java with examples
- Double.equals() Method in Java with Examples
- MathContext equals() Method in Java
- BigDecimal equals() Method in Java
- EnumMap equals() Method in Java with Examples
- IdentityHashMap equals() Method in Java
- GregorianCalendar equals() Method in Java
- BigInteger equals() Method in Java
- Vector equals() Method in Java
- Java 8 Clock equals() Method with Examples
- ConcurrentSkipListSet equals() method in Java
- FloatBuffer equals() method in Java with Examples
- LongBuffer equals() method in Java
- ShortBuffer equals() method in Java with Examples
- DoubleBuffer equals() method in Java with Examples
Improved By : UjasMehta

Formed in 2009, the Archive Team (not to be confused with the archive.org Archive-It Team) is a rogue archivist collective dedicated to saving copies of rapidly dying or deleted websites for the sake of history and digital heritage. The group is 100% composed of volunteers and interested parties, and has expanded into a large amount of related projects for saving online and digital history.
