Один простой способ понять разницу ниже: -
String s ="abc";
String s1= "abc";
String s2=new String("abc");
if(s==s1){
System.out.println("s==s1 is true");
}else{
System.out.println("s==s1 is false");
}
if(s==s2){
System.out.println("s==s2 is true");
}else{
System.out.println("s==s2 is false");
}
Выход -
s==s1 is true
s==s2 is false
Таким образом, новый String () всегда будет создавать новый экземпляр.