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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 喜之郎果冻 中级黑马   /  2013-10-16 21:45  /  1868 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 喜之郎果冻 于 2013-10-16 22:59 编辑

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

评分

参与人数 1技术分 +1 收起 理由
haxyek + 1

查看全部评分

9 个回复

倒序浏览
null代表了一个空对象,根本就不是一个字符串。对空对象做任何操作都不行的,除了了=和==
"" 代表声明了一个对象实例,这个对象实例的值是一个长度为0的空字符串。这个字符串里没有内容。看下面的实例分析:
  string str=null; 只是定义了一个句柄,也就是说你有了个引用,但是这个引用未指向任何内存空间。
  string str="";这个引用已经指向了一块是空字符串的内存空间,是一个实际的东东了,所以你可以对它进行操作。

评分

参与人数 1技术分 +1 收起 理由
追溯客 + 1

查看全部评分

回复 使用道具 举报
""代表长度为0的字符串。
null 是一个关键字,表示不引用任何对象的 null 引用的文字值。 null 是引用类型变量的默认值。 普通值类型不能为 null。

评分

参与人数 1技术分 +1 收起 理由
追溯客 + 1

查看全部评分

回复 使用道具 举报
ˋ初°见 发表于 2013-10-16 22:02
null代表了一个空对象,根本就不是一个字符串。对空对象做任何操作都不行的,除了了=和==
"" 代表声明了一 ...

意思就是说这是两个不同的东西,不能通用和替换?
回复 使用道具 举报
喜之郎果冻 发表于 2013-10-16 22:13
意思就是说这是两个不同的东西,不能通用和替换?

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

用法上都一样,但是不等价 nul l!= ""   
string str=null;   相当于什么都没有,没有属于自己的空间
string str1="";    相当于你有一张白纸,也就是有属于自己的空间

评分

参与人数 1技术分 +1 收起 理由
追溯客 + 1

查看全部评分

回复 使用道具 举报
杨靖 中级黑马 2013-10-16 22:35:36
7#
在对于string类型的变量来说,""就是声明了一个变量,并且为这个变量开辟了内存空间,空间中存放长度为0的字符串,而null没有开辟内存空间,只是声明了一个变量。

评分

参与人数 1技术分 +1 收起 理由
追溯客 + 1

查看全部评分

回复 使用道具 举报
"代表长度为0的字符串。
null 是一个关键字,表示不引用任何对象的 null 引用的文字值。 null 是引用类型变量的默认值。 普通值类型不能为 null。
string str=null;   相当于什么都没有,没有属于自己的空间
string str1="";    相当于你有一张白纸,也就是有属于自己的空间

null代表了一个空对象,根本就不是一个字符串。对空对象做任何操作都不行的,除了了=和==
回复 使用道具 举报
nooooy 中级黑马 2013-10-16 22:44:58
9#
例:
“”就是你有你的理想,很丰满。
null 就是现实,很骨感。
回复 使用道具 举报
谢谢大家,我明白了{:soso_e154:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马