你这么单独看是看不出区别来的- public class MyTest {
 
 -         public static void main(String[] args) {
 
 -                 String s1=new String("abc");
 
 -                 String s2="abc";
 
 -                 String s3="abc";
 
 -                 
 
 -                 String s4=new String("abc");
 
 -                 
 
 -                 System.out.println(s1==s2);//false
 
 -                 System.out.println(s2==s3);//true
 
 -                 System.out.println(s1==s4);//false
 
 -         }
 
 - }
 
  复制代码 可以看出s1和s2指向的不是同一个对象,而是分别在内存中创建了对象; 
而s3则和s2指向的是同一对象; 
又可以看出s1、s4指向不是同一对象。 
由此可以看出,使用new来新建一个字符串时,是无视内存中的字符串对象,直接新建立对象; 
而使用 String s="string" 方式时,会直接引用内存中已有的字符串对象。 |