equals between strings java code example

Example 1: java string equal vs ==

Case1)
String s1 = "Stack Overflow";
String s2 = "Stack Overflow";
s1 == s1;      // true
s1.equals(s2); // true
Reason: String literals created without null are stored in the string pool in the permgen area of the heap. So both s1 and s2 point to the same object in the pool.
Case2)
String s1 = new String("Stack Overflow");
String s2 = new String("Stack Overflow");
s1 == s2;      // false
s1.equals(s2); // true
Reason: If you create a String object using the `new` keyword a separate space is allocated to it on the heap.

Example 2: in java how to compare two strings

class scratch{
    public static void main(String[] args) {
        String str1 = "Nyello";
        String str2 = "Hello";
        String str3 = "Hello";

        System.out.println( str1.equals(str2) ); //prints false
        System.out.println( str2.equals(str3) ); //prints true
    }
}