黑马程序员技术交流社区

标题: 关于string的一个特性 [打印本页]

作者: 何圣东    时间: 2012-1-30 00:37
标题: 关于string的一个特性
刚看苏坤老师的视频,讲到字符串不可变:
string s ="abc";
s="888888";
苏坤老师说"abc"在内存中并没有消失,那么我想问"abc"在内存中依然存在的意义是什么?
我感觉"abc"在内存中存在没有意义,而且还占内存。

作者: 房宝彬    时间: 2012-1-30 10:31
如果单独讲 abc意义的话 那只能根据编程人员的定义不同吧。

string s ="abc";
s="888888";

这里主要是讲解 string类型内存的问题,s所指向的地址值变了,但是对象没变。
作者: 刘少华    时间: 2012-1-30 14:30
在.NET中String是不可改变对象,一旦创建了一个String对象并为它赋值,它就不可能再改,当你声明一个字符串变量赋值时,.NET会检查string内置池中是否有这个字符串,若有则直接返回地址,没有则会在内置池中创建。也就是说,当我们创建了字符串对象a,它的值是“hello”,当我们再创建一个值为“hello”的字符串对象b时,.NET不会再去分配一块内存空间,而是直接指向了a在内存中的地址。这样可以确保内存的有效利用




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