黑马程序员技术交流社区

标题: 为什么说string类型具有不可变性呢? [打印本页]

作者: 李永涛    时间: 2012-11-29 23:59
标题: 为什么说string类型具有不可变性呢?

为什么说string类型具有不可变性呢?一旦赋值就不可再改变
  1. string str = “你好";
  2. str = "世界,你好";
  3. 那这样不是改变了变量str的值了吗?
复制代码
该怎么解释呢?跟int类型不一样么···
作者: 王继光    时间: 2012-11-30 09:53
string str = “你好"; //这一步应该看成是 在内存中分配一块区域,存贮了 数据“你好”,然后将 str指向 “你好”这个数据的 引用

str = "世界,你好"; //这一步实际上是在内存中 重新分配了一块内存,存贮数据“世界,你好” 然后再将 str指向这块内存 的 新的引用

实际上在上面那个过程中,并没有改变第一块内存区域内的值。
作者: 武江英    时间: 2012-11-30 09:55
int类型在修改值时只修改原内存地址下的值,而string修改值的时候,内存中又开辟了一块新的内存空间给str,原来的值还是存在于内存中。




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