黑马程序员技术交流社区
标题:
关于字符串对象
[打印本页]
作者:
16463535
时间:
2013-4-18 13:33
标题:
关于字符串对象
String s = new String("abc");创建了几个String Object?
正确应该是两个。
不理解,求解释。
作者:
HM张健
时间:
2013-4-18 15:38
String s = new String("abc"); 其中字符串“abc” 一个存储在 常量池中 一个放在 对内存中
如果是 String s = "abc";的话则是一个 直接引用在常量池中的字符串
还有这个可以百度吧
作者:
hacket
时间:
2013-4-18 17:06
String s = new String("abc")
我们可以把上面这行代码分成String str、=、"abc"和new String()四部分来看待。
String str只是定义了一个名为str的String类型的变量,因此它并没有创建对象;
=是对变量str进行初始化,将某个对象的引用(或者叫句柄)赋值给它,显然也没有创建对象;
最后,new String("abc")看成"abc"和new String();
1.new String()创建了一个对象
2."abc";,这行代码被执行的时候,JAVA虚拟机首先在字符串池中查找是否已经存在了值为"abc"的这么一个对象,它的判断依据是String类equals(Object obj)方法的返回值。如果有,则不再创建新的对象,直接返回已存在对象的引用;如果没有,则先创建这个对象,然后把它加入到字符串池中,再将它的引用返回。要是你前面没有出现这种用" "双引号格式创建“abc”字符串对象的话,那么就有两个对象,要是之前创建了,那么这里就只创建一个对象,"abc"就从字符串常量池中取出来。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2