A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李永涛 中级黑马   /  2012-11-29 23:59  /  1392 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


为什么说string类型具有不可变性呢?一旦赋值就不可再改变
  1. string str = “你好";
  2. str = "世界,你好";
  3. 那这样不是改变了变量str的值了吗?
复制代码
该怎么解释呢?跟int类型不一样么···

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

2 个回复

倒序浏览
string str = “你好"; //这一步应该看成是 在内存中分配一块区域,存贮了 数据“你好”,然后将 str指向 “你好”这个数据的 引用

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

实际上在上面那个过程中,并没有改变第一块内存区域内的值。

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
int类型在修改值时只修改原内存地址下的值,而string修改值的时候,内存中又开辟了一块新的内存空间给str,原来的值还是存在于内存中。

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马