黑马程序员技术交流社区

标题: ""和null的区别 [打印本页]

作者: 喜之郎果冻    时间: 2013-10-16 21:45
标题: ""和null的区别
本帖最后由 喜之郎果冻 于 2013-10-16 22:59 编辑

""和null有什么区别呢?在使用时可以互换吗?不能话最好举个例子说明下。本人小白,谢谢啦~

作者: ˋ初°见    时间: 2013-10-16 22:02
null代表了一个空对象,根本就不是一个字符串。对空对象做任何操作都不行的,除了了=和==
"" 代表声明了一个对象实例,这个对象实例的值是一个长度为0的空字符串。这个字符串里没有内容。看下面的实例分析:
  string str=null; 只是定义了一个句柄,也就是说你有了个引用,但是这个引用未指向任何内存空间。
  string str="";这个引用已经指向了一块是空字符串的内存空间,是一个实际的东东了,所以你可以对它进行操作。
作者: 夏闯富    时间: 2013-10-16 22:02
""代表长度为0的字符串。
null 是一个关键字,表示不引用任何对象的 null 引用的文字值。 null 是引用类型变量的默认值。 普通值类型不能为 null。
作者: 喜之郎果冻    时间: 2013-10-16 22:13
ˋ初°见 发表于 2013-10-16 22:02
null代表了一个空对象,根本就不是一个字符串。对空对象做任何操作都不行的,除了了=和==
"" 代表声明了一 ...

意思就是说这是两个不同的东西,不能通用和替换?
作者: 七里香    时间: 2013-10-16 22:31
喜之郎果冻 发表于 2013-10-16 22:13
意思就是说这是两个不同的东西,不能通用和替换?

功能上面试差不多的啦,用哪个都不影响,主要是性能上面(对内存的占用)有一些差别所以初学者可以不用去关心这点区别。
作者: ˋ初°见    时间: 2013-10-16 22:34
喜之郎果冻 发表于 2013-10-16 22:13
意思就是说这是两个不同的东西,不能通用和替换?

用法上都一样,但是不等价 nul l!= ""   
string str=null;   相当于什么都没有,没有属于自己的空间
string str1="";    相当于你有一张白纸,也就是有属于自己的空间
作者: 杨靖    时间: 2013-10-16 22:35
在对于string类型的变量来说,""就是声明了一个变量,并且为这个变量开辟了内存空间,空间中存放长度为0的字符串,而null没有开辟内存空间,只是声明了一个变量。
作者: 追溯客    时间: 2013-10-16 22:37
"代表长度为0的字符串。
null 是一个关键字,表示不引用任何对象的 null 引用的文字值。 null 是引用类型变量的默认值。 普通值类型不能为 null。
string str=null;   相当于什么都没有,没有属于自己的空间
string str1="";    相当于你有一张白纸,也就是有属于自己的空间

null代表了一个空对象,根本就不是一个字符串。对空对象做任何操作都不行的,除了了=和==
作者: nooooy    时间: 2013-10-16 22:44
例:
“”就是你有你的理想,很丰满。
null 就是现实,很骨感。
作者: 喜之郎果冻    时间: 2013-10-16 22:58
谢谢大家,我明白了{:soso_e154:}




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