黑马程序员技术交流社区

标题: 字符串赋初值是使用null和“”有什么区别; [打印本页]

作者: xiaqingchao    时间: 2012-11-27 16:33
标题: 字符串赋初值是使用null和“”有什么区别;
字符串赋初值是使用null和“”有什么区别;
作者: songFeng4985    时间: 2012-11-27 16:40
null表示什么也没有,空对象
""表示空字符串
null放在堆里
""放栈里
""分配空间  null不分配
作者: xiaqingchao    时间: 2012-11-27 16:43
null不分配空间为什么还会在堆里
作者: songFeng4985    时间: 2012-11-27 16:48
null是一个空对象,什么也没有,所以不分配内存
堆一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。
注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,

作者: xiaqingchao    时间: 2012-11-27 16:50
谢谢我知道了
作者: 曾玉锋    时间: 2012-11-27 22:05
string str=null;
只是在栈中开辟一块内存存放 str,里面没有指向堆的内存地址,也不在堆中开辟空间。

string str="";
在栈中开辟一块内存存放str,在堆(字符串池)中开辟空间存放"",str 中存放""的内存地址。




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