一个字符串创建后无法被改变,所以它可以被多个引用变量共用,它存在于方法区的常量池中。
使用直接赋值的方法:
String str1 = "abc"; str1会到常量池中去找有没有abc这个字符串,发现没有则创建了一个,然后将引用返回给了str1。
String str2 = "abc"; str2到常量池中去找到了上一次str1创建的字符串abc,然后把字符串的引用返回给了str2
System.out.println(str1==str2); //所以它们引用是相等的。true。
--------------------------------------------------------------------------------------------
使用new关键字创建字符串实例:
String s1 = new String("abc");首先它会在常量池中创建一个abc,然后再堆中创建了一个String类型的对象,把池中的abc这个字符串的值(不是址)复制给这个对象。
String s2 = new String("abc");把池中的abc这个字符串的值(不是址)复制给这个对象。
System.out.println(s1==s2); false ,引用地址不同
问题:以上共创建了几个对象?
3个,分别是abc、s1、s2
|