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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王--明 黑马帝   /  2012-2-23 10:09  /  1755 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

string = null 和string = “”;
何时各自定义,内存怎么分配。

8 个回复

倒序浏览
这种方式我还真没有见过!是不是String a="" 和String a=null; 应该要有个名字吧,或者用new了
回复 使用道具 举报
string = null 应该是在栈内存中开了个string地址为空 和string = “”是把栈内的string地址引到了String池中的""的地址;
如有不对请指出
回复 使用道具 举报
string   str="",表示一个空串,被实列化了,占用了内存空间  
  string   str=null,表示一个空引用,没有占用了空间
回复 使用道具 举报
同意上楼的,
不过很要注意的对于null的字符串调用对象的方法会抛出NullPointException的异常,而对""这样的对象这不会。
回复 使用道具 举报
String  str= “”;等于在栈内存中开辟空间。
String str = null;没有初始化、也就是没开辟空间、容易报空指针异常。
         
回复 使用道具 举报
陈伟 中级黑马 2012-2-23 14:16:20
7#
string = null
表示定义了一个引用型变量string,不指向任何对象,当该变量指向的变量使用完毕,可以这样写释放内存
string = “”;
表示定义了一个引用型变量string指向一个内容为空的对象;
回复 使用道具 举报
朱皓 中级黑马 2012-2-23 14:46:54
8#
string str=null;是指声明了一个string类型变量的引用,但是在堆内存中并没有开辟空间;
string str="";是指黑马声明了一个string类型变量的引用,在堆内存中也开辟了空间,但是长度为0;
回复 使用道具 举报
String s = null :只是定义了一个字符串变量,没有在内存中开辟空间
String s= "";定义了一个字符串变量,在内存中开辟了空间,内容为空
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马