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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 沈可 中级黑马   /  2014-1-14 16:13  /  1423 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 沈可 于 2014-1-14 20:10 编辑

string str = null; 与 string str = ""的区别?

评分

参与人数 1技术分 +1 收起 理由
茹化肖 + 1

查看全部评分

5 个回复

正序浏览
string str = null 是不给他分配内存空间
string str = "" 给它分配长度为空字符串的内存空间

评分

参与人数 1技术分 +1 收起 理由
茹化肖 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 矫情 于 2014-1-14 19:06 编辑

一个是什么都没有,一个是空字符串,区别大了。
你定义了一个变量的引用str。
string str=null 把这个引用指向了一个null,没有地址没有值的地方。
string str="" 把这个引用指向了一个地址,地址里面存的是空的字符。

评分

参与人数 1技术分 +1 收起 理由
茹化肖 + 1

查看全部评分

回复 使用道具 举报
就比如说是真空和空气的区别,看似感觉不大送但是在内存回收机制上有时候是致命的

评分

参与人数 1技术分 +1 收起 理由
茹化肖 + 1

查看全部评分

回复 使用道具 举报
string str=null是没有开辟内存空间的,指向也是空,而string str=""是有值的在内存开辟了空间的,指向的是空字符,而string str=""与string str=new  string()也是不相等的,对于string你每创建一个值都会在内存开辟一个空间,指向也就不相同,所以当你==判断的时候也是不相等的,但是他们的值确实像同的,用equals判断就为true

评分

参与人数 1技术分 +1 收起 理由
茹化肖 + 1

查看全部评分

回复 使用道具 举报
string str=null表示str没有指向内存地址值。垃圾回收机制会在适当的时候回收掉这篇内存
string str=""表示str指向空字符串的地址。这是有值的。

评分

参与人数 1技术分 +1 收起 理由
茹化肖 + 1

查看全部评分

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