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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李柯 中级黑马   /  2012-4-15 17:55  /  2242 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

对于 String str = null与String str = ""理解的不是很清楚,
希望能详细解释一下他们的区别?

7 个回复

倒序浏览
null表示声明了一个空对象,可以说它根本就不是一个字符串
而“”表示声明了一个对象实例,这个对象实例的值就是一个长度为0的空字符串
如果 你  String s=null; string.trim();就会抛出为空的exception 但如果是String s="";就不会抛出

评分

参与人数 1技术分 +1 收起 理由
岳民喜 + 1

查看全部评分

回复 使用道具 举报
null只是一个空对象,不是一个字符串,除了==和=不能做任何操作。而""声明了一个对象实例,这个对象实例的值是一个长度为0的空字符串,可以对它进行任何操作。String str=null未分配堆内存空间,仅代表一个空引用,但是这个引用未指向任何内存空间。String str="" 这个引用指向了一块是空字符串的内存空间。
回复 使用道具 举报
本帖最后由 于潇 于 2012-4-15 18:35 编辑

string   str= " ",表示一个空串,被实列化了,占用了内存空间,
string   str=null,表示一个空串,没有占用了空间,
回复 使用道具 举报
string   str= "";//声明了一个变量,变量指向""(空字符串)。已经实例化了,在内存中已经开辟了地址空间
string   str=null;//声明了一个变量,变量指向null对象。 没有实例化,在内存中没有地址,仅是一个空引用
回复 使用道具 举报
String str = null并没有创建对象。如果是成员变量的话 默认初始化就是null

String str = "" 创建了一个字符串对象,这是一个空的字符串。
回复 使用道具 举报
String   str= " ":   表示一个空串,其值被存储在堆中。一般连接字符串的话这样写比较方便,但是不建议这样做。
String   str=null:   空引用,不引用任何对象。一般用于在方法中存放并返回一个值。
String   str   =   null;
你说这个分配了内存没有
理论上是肯定分配了内存的了,不然的话编译器用什么来辨别null呢。就像这个一样:
int   i;
首先,该语句声明了int变量i。编译器不会让我们使用这个变量,(成员字段除外)除非我们用一个值初始化了该变量。但这个声明会在堆栈中给它分配4个字节,以保存其值。
回复 使用道具 举报
string   str= "", string   str=null
都是声明了一个String的变量,
而前者指向""(空字符串),实例化了,在内存中已经开辟了地址空间,一般不推荐这样使用;
后者指向null对象, 没有实例化,在内存中没有地址,仅是一个空引用。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马