Pages

Friday, March 8, 2019

Java | Difference between String.equals() and String.contentEquals() method?

What is the difference between String.equals() and String.contentEquals() method?

In this post, We will learn What is the difference between String.equals() and String.contentEquals() method in java? Simply contentequals vs equals  for these string methods.

Both these methods are present in the String class in java.

Read the article on Examples on String contentEquals method.

Syntax:

boolean equals​(Object anObject)
public boolean contentEquals​(CharSequence cs)

Difference between String.equals() and String.contentEquals() method?

String equals() VS contentEquals():

The equals() method is to compare the contents of two Strings are same whereas contentEquals method is to compare String with StringBuffer or StringBuilder. But both are to compare the contents. In other words, contentEquals method does equals() method + additional comparison with StringBuffer, StringBuilder, etc.

Equals method:

Equals() method does Comparing this string to the specified object. In this case, both should be Strings.
1) This String should be String
2) Specified String also should be String.

The result is true if and only if the specified object is not null and is a String object that represents the same sequence of characters as this object. 

contentEquals​ method:

This does Compare this string to the specified CharSequence. 

All Known Implementing Classes of CharSequence: CharBuffer, Segment, String, StringBuffer, StringBuilder 

In this case,
1) This String should be String
2) Specified String should be CharSequence. I.e. Implementation of CharSequence, that can be StringBuffer or StringBuilder or etc.

I would recommend you to understand how contentEquals method works internally or an internal implementation.

contentEquals method internal implementaion

equals method internal implementation

Example program to see difference between equals and contentEquals methods:


In this program, We will compare the following use cases.


Equals Vs ContentEquals Example


1) Compare String with String using equals method.
2) Compare String with StringBuffer using equals method.
3) Compare String with String using contentEquals method.
4) Compare String with StringBuffer using contentEquals method.

5) Compare String with StringBuilder using contentEquals method.



public class EqualsVsContentEqualsExample {
 public static void main(String[] args) {

  String string1 = "Hello"; // This is String 1
  String string2 = "Hello"; // This is String 2

  StringBuffer buffer1 = new StringBuffer("Hello"); // This is StringBuffer
  StringBuilder builder1 = new StringBuilder("Hello"); // This is StringBuilder

  // 1. Comparing String with String using equals method.

  boolean result1 = string1.equals(string2);
  System.out.println("Comparing String with String using equals method : " + result1);

  // 2. Comparing String with StringBuffer using equals method.

  boolean result2 = string1.equals(buffer1);
  System.out.println("Comparing String with StringBuffer using equals method : " + result2);

  // 3. Comparing String with String using contentEquals method.

  boolean result3 = string1.contentEquals(string2);
  System.out.println("Compare String with String using contentEquals method : " + result3);
  
  // 4. Comparing String with StringBuffer using contentEquals method.
  
  boolean result4 = string1.contentEquals(buffer1);
  System.out.println("Comparing String with StringBuffer using contentEquals method : " + result4);
  
  // 5. Compare String with StringBuilder using contentEquals method.
  
  boolean result5 = string1.contentEquals(builder1);
  System.out.println("Compare String with StringBuilder using contentEquals method : " + result5);
 }
}



Output:

The above program produces the following output.


Comparing String with String using equals method : true
Comparing String with StringBuffer using equals method : false
Compare String with String using contentEquals method : true
Comparing String with StringBuffer using contentEquals method : true
Compare String with StringBuilder using contentEquals method : true

Observe case 2, we passed StringBuffer to the equals method but it returned false. Because it has a check if the passed object is an instance of String. If not, returns false.
Please write your questions in comments section.






No comments:

Post a Comment

Please do not add any spam links in the comments section.