你这么单独看是看不出区别来的- 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" 方式时,会直接引用内存中已有的字符串对象。 |