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直接 创建一个新的实例。
转载于:https://blog.51cto.com/2197042/1157034