String str1=”abc” 和 String str1=new String(“abc”); 这两个的区别是什么?
public class StringCompare{
 
   public static void main(String[] args){
   
     String a1 = "abc";
     String a2 = "abc";
     String an = new String("abc");
 
     System.out.println("a1==a2>"+(a1==a2));
     System.out.println(a1==an);
      System.out.println(a1.equals(an));
   
}
   
}
 
依次打印为:true、false、true。a1 a2存储在栈内存,an存储在堆内存,a1 a2 共同指向同一个地址,a1寻找内存中是否有值为abc的内存块,若有则直接指向该内存地址若无则新建;而an直接 创建一个新的实例。