新手求解关于字符串的有关问题

新手求解关于字符串的问题。
String s="abc"; 和String s=new String("abc"); 这二者有什么不同吗? 
------解决思路----------------------
从执行过程出发:
String s="abc"
 执行时,编译器会先去String常量池是寻找,如果在常量池中找到了"abc",则把abc引用赋给s;
eg: String s="abc";  String s1="abc";  则s==s1;
 
String s=new String()
执行时,不管常量池中有没有,都会在堆内存中开辟一个新地址,再把地址引用赋给s;
eg: String s=new String("abc");  String s1="abc";  但其实s!=s1;