黑马程序员技术交流社区

标题: String类产生对象不可更改是怎么理解的?产生对象内容和引用存储在哪? [打印本页]

作者: 见著    时间: 2016-6-5 23:10
标题: String类产生对象不可更改是怎么理解的?产生对象内容和引用存储在哪?
String类产生对象不可更改是怎么理解的?产生对象内容和引用存储在哪?
作者: ljd    时间: 2016-6-5 23:49
系统为该String在堆内存中开辟一个单独的空间用于存储内容,并把地址值传给String变量,再给String变脸赋值和追加内容等操作,都只是在堆内存中重新开辟一块内存空间并把该地址值赋给String变量,应该是这样的
作者: 骄阳登峰    时间: 2016-6-6 00:29
值存储在堆内存中,值不可更改.
作者: 见著    时间: 2016-6-6 23:31
我觉得String类型创建的对象不可变是因为对象属于字符串常量,存于常量池中,将其地址指向对象,如果再创建一个对象指向这个常量,则实际上两者指向同一个对象,地址也相同。
作者: 何亚辉    时间: 2016-6-7 11:15
实际上是因为任何对String类型进行的底层操作都会copy一份.   
作者: lifeiwangyue    时间: 2016-6-7 13:58
何亚辉 发表于 2016-6-7 11:15
实际上是因为任何对String类型进行的底层操作都会copy一份.

也就是说每次的Stringde 操作都会产生新的String对象?
作者: 云袭    时间: 2016-6-7 18:56
每次都会产生一个新的String字符串




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