黑马程序员技术交流社区

标题: 这个语句到底创建了几个String object [打印本页]

作者: 赵磊    时间: 2011-7-27 21:28
标题: 这个语句到底创建了几个String object
String str=new String("abc")
这个语句到底创建了几个String object?它们直接有什么区别呢?
作者: 孙朋帅    时间: 2011-7-27 21:41
首先说明String是不可变类。一次创建将不能再修改,由于String是非可变的,所以每次对string的改变都要重新建立String对象,为了string对象的可利用性和jvm运行的高效。如果是s="abc",将直接在strings pool中进行查找是否存在相等的String,如果存在则直接利用,就不在创建。如果不存在则直接在strings pool中创建对象。如果用new创建对象,则和其他对象的创建一样在heap中创建。
对于此问题来说,则创建了两个string,第一个“abc”创建一个String在strings pool中,第二个是new 出来的String,将和其他对象new出来的对象一样创建在堆中。  str则指向堆中的对象。
[ 本帖最后由 孙朋帅 于 2011-07-27  21:42 编辑 ]
作者: 匿名    时间: 2011-7-27 22:21
楼上正解,确实是一个




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2