黑马程序员技术交流社区
标题:
字符串疑问?
[打印本页]
作者:
李柯
时间:
2012-4-15 17:55
标题:
字符串疑问?
对于 String str = null与String str = ""理解的不是很清楚,
希望能详细解释一下他们的区别?
作者:
白潇
时间:
2012-4-15 18:03
null表示声明了一个空对象,可以说它根本就不是一个字符串
而“”表示声明了一个对象实例,这个对象实例的值就是一个长度为0的空字符串
如果 你 String s=null; string.trim();就会抛出为空的exception 但如果是String s="";就不会抛出
作者:
王德南
时间:
2012-4-15 18:24
null只是一个空对象,不是一个字符串,除了==和=不能做任何操作。而""声明了一个对象实例,这个对象实例的值是一个长度为0的空字符串,可以对它进行任何操作。String str=null未分配堆内存空间,仅代表一个空引用,但是这个引用未指向任何内存空间。String str="" 这个引用指向了一块是空字符串的内存空间。
作者:
于潇
时间:
2012-4-15 18:28
本帖最后由 于潇 于 2012-4-15 18:35 编辑
string str= " ",表示一个空串,被实列化了,占用了内存空间,
string str=null,表示一个空串,没有占用了空间,
作者:
陈坚
时间:
2012-4-15 18:45
string str= "";//声明了一个变量,变量指向""(空字符串)。已经实例化了,在内存中已经开辟了地址空间
string str=null;//声明了一个变量,变量指向null对象。 没有实例化,在内存中没有地址,仅是一个空引用
作者:
魏明明
时间:
2012-4-15 18:51
String str = null并没有创建对象。如果是成员变量的话 默认初始化就是null
String str = "" 创建了一个字符串对象,这是一个空的字符串。
作者:
小鹿叙鹿
时间:
2012-4-15 22:26
String str= " ": 表示一个空串,其值被存储在堆中。一般连接字符串的话这样写比较方便,但是不建议这样做。
String str=null: 空引用,不引用任何对象。一般用于在方法中存放并返回一个值。
String str = null;
你说这个分配了内存没有
理论上是肯定分配了内存的了,不然的话编译器用什么来辨别null呢。就像这个一样:
int i;
首先,该语句声明了int变量i。编译器不会让我们使用这个变量,(成员字段除外)除非我们用一个值初始化了该变量。但这个声明会在堆栈中给它分配4个字节,以保存其值。
作者:
党传才
时间:
2012-4-15 23:08
string str= "", string str=null
都是声明了一个String的变量,
而前者指向""(空字符串),实例化了,在内存中已经开辟了地址空间,一般不推荐这样使用;
后者指向null对象, 没有实例化,在内存中没有地址,仅是一个空引用。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2