I have following lines of code to compare String. str1 not equal to str2, which is understandable since it compares object reference. But then why is s1 equal to s2?
String s1 = "abc";
String s2 = "abc";
    
String str1 = new String("abc");
String str2 = new String("abc");
    
if (s1==s2)
    System.out.println("s1==s2");           
else
    System.out.println("s1!=s2");
    
if (str1==str2)
    System.out.println("str1==str2");           
else
    System.out.println("str1!=str2");
    
if (s1==str1)
    System.out.println("str1==s1");         
else
    System.out.println("str1!=s1");
Output:
  s1==s2
  str1!=str2
  str1!=s1
 
     
     
     
     
    
 
     
    