- public static void main(String[] args)
- {
- String s1="abc";
- String s2="abc";
- String s3=new String("abc");
-
- System.out.println("abc"==s1);//true,引用s1指向常量池中的String常量"abc"
- System.out.println(s1==s2);//true,引用s1、s2都指向常量池中的"abc"
- System.out.println(s1==s3);//false,引用s3指向堆中新建的new String("abc");
-
- String s4="a";
- String s5="a"+"b";
- String s6=s4+"b";
- final String s7="a";
- String s8=s7+"b";
- String s9="ab";
-
- System.out.println(s5==s9);//true,根据编译器合并已知量的优化功能,相当于s5="ab";
- System.out.println(s6==s9);//false,编译器真正运行的是String s6 = (new StringBuilder()).append(s4).append("b").toString();
- System.out.println(s8==s9);//true,由于s7是常量,同s5
- }
复制代码 |
|