技术社区
1. class StringTest {
2. public static void main(String[] args) {
3. String s1 = "Programming";
4. String s2 = new String("Programming");
5. String s3 = "Program";
6. String s4 = "ming";
7. String s5 = "Program" + "ming";
8. String s6 = s3 + s4;
9. System.out.println(s1 == s2);
10. System.out.println(s1 == s5);
11. System.out.println(s1 == s6);
12. System.out.println(s1 == s6.intern());
13. System.out.println(s2 == s2.intern());
14. }
回复列表
-
0092020-02-14
false true false true false
补充说明
1. String对象的intern()方法会得到字符串对象在常量池中对应的版本的引用(如果常量池中有一个字符串与
String 对象的 equals结果是 true),如果常量池中没有对应的字符串,则该字符串将被添加到常量池中,然后返
回常量池中字符串的引用;
2. 字符串的+操作其本质是创建了StringBuilder 对象进行 append 操作,然后将拼接后的 StringBuilder 对
象用 toString 方法处理成 String 对象,这一点可以用 javap -c StringEqualTest.class 命令获得 class 文件对应
的 JVM 字节码指令就可以看出来。