就是直接赋值字符串和new一个String对象的区别,如下所示:
String s4 = "def";
String s5 = new String("def");
String s6 = "def";
System.out.println(s4 == s6);//true,因为这里s4和s6是同一个对象
System.out.println(s4.equals(s6));//true,显然s4和s6的内容也是相同的
System.out.println(s5 == s6);//false,s1和s5是两个不同的对象
System.out.println(s5.equals(s6));//true,因为s5和s6的内容相同,都是“def”
对于直接赋值字符串的方式· java有一个字符串缓冲区 你新建一个的时候它会先找缓冲区里有没有这个字符串 如果有 直接返回引用 没有就在里面新建
对于new String()的方式 :要新建一个String对象 它首先也会去缓冲区里边查找 不管有没有 它都会在堆里新建一个 如果缓冲区里面没有 则在缓冲区里面也新建一个
希望可以帮到你 |