DEV Community

Cover image for Understanding Strings, toString(), and equals() in Java
Sanjay R
Sanjay R

Posted on • Edited on

2

Understanding Strings, toString(), and equals() in Java

Let's dive into the topic

Strings

  • A string is a class
  • It is from a package called Java.lang
  • String is immutable
  • The object is implicitly Created

Let's see some examples:

//creating objects for string
String s = new String();
System.out.println(s);
Enter fullscreen mode Exit fullscreen mode
output:
//empty
Enter fullscreen mode Exit fullscreen mode

In the above example, the output will be empty. But if we print an object of another class, some hashcode will be printed. For a String, Why is it not printing anything? Let's see about that.

Let's see some internal work.

Whenever an object is printed, Java internally calls the toString method which returns a string format.

//toString code

public class Object{

    public String toString(){
      return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }

}
Enter fullscreen mode Exit fullscreen mode

This is the internal code for the toString method. We can also override this method. The Object class is the parent class of every class. We can override the Object class methods unless they have the final or static keyword.

Let's get to the point.

In the String class, the toString method is written as:

// This object (already a string!) is returned. 

public String toString() {
    return this;
}
Enter fullscreen mode Exit fullscreen mode

It just returns the string itself. Now, since the string is empty, it prints the empty string.

Overriding the toString method

public class Test {
    @Override
    public String toString(){
        return "Espresso";
    }
    public static void main(String[] args) {
        Test a = new Test();
        System.out.println(a);
    }
}
Enter fullscreen mode Exit fullscreen mode
output:
Espresso
Enter fullscreen mode Exit fullscreen mode

We have overridden the toString method to print espresso every time we call toString.

equals()

It checks whether the two objects are the same. But if we think logically, two objects can't be the same. 

Here's an analogy: Imagine there are two phones from the same brand and model. Their properties may be the same, but that doesn't mean they are the same. They are two different physical objects. Likewise, we can't compare the two objects because the two objects are different and it is stored in separate memory locations. But we can compare their properties, and also we override the equals() method.

However, for the String class, the equals() method is overridden to compare the character sequences of the strings, rather than the object reference. This means that two different String objects with the same character sequence will be considered equal when compared using the equals() method.

So, this is it.

I hope it is useful.

Thank You!!!

Image of Datadog

The Future of AI, LLMs, and Observability on Google Cloud

Datadog sat down with Google’s Director of AI to discuss the current and future states of AI, ML, and LLMs on Google Cloud. Discover 7 key insights for technical leaders, covering everything from upskilling teams to observability best practices

Learn More

Top comments (0)

Retry later