String字符串的两种声明方式

String str1 = "abcd";

String str2 = new String ("abcd");

String str3 = str2.intern();

比较两个对象用"=="比较的其实是对象的内存地址

String str1 = "abcd";

String str2 = "abcd";

使用直接赋值的方式创建字符串时字符串对象是保存一块叫做String常量池的空间中。在实例化字符串之前会先到这个空间查看要创建的字符串是否已存在

如果已经存在会直接返回字符串的引用给它

String str1 = new String("abcd");

String str2 = new String("abcd");

System.out.println(s1==s2)结果是false

s1在常量池中创建对象"abcd",堆中创建对象"abcd"

s2查看常量池中已有abcd,不再创建,在堆中创建对象"abcd"

s1和s2指向堆内存中两个独立的字符串对象

 

posted @ 2020-06-09 15:00  Jazzmatic  阅读(883)  评论(0编辑  收藏  举报