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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 崔增阳 中级黑马   /  2014-4-8 15:44  /  1755 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 崔增阳 于 2014-4-9 15:58 编辑

stirng s=null  和  stirng s="" 有什么区别?

评分

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

查看全部评分

6 个回复

正序浏览
前面的在内存空间不分配内存,二后面的一个是需要在存储空间分配一个空字符空间。
回复 使用道具 举报
打个比喻 “你什么都没说”
string s="" 是你没说任何话
string s = Null 是你没法说话
首先,string s是一个声明,你可以把它看成是声明了一个引用;s是一个string类的引用,string s = Null 表示它不指向任何字符串对象,你将s这个引用指向了内存中一个空地址(没任何东西,null),string s=""你将s的引用指向了一个空字符串(有一个字符串对象,而且它的值是0长度的字符串)如果调用s.length()之类的方法,s为null时会抛出NullPointerException,而""则能进行正常的计算。
回复 使用道具 举报
NULL 表示一个引用也就是没有指向任何引用
""表示一个空的字符串,它是以'\0'做结束的

评分

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

查看全部评分

回复 使用道具 举报
null是没有分配内存 ""是分配了空间 赋值为空

评分

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

查看全部评分

回复 使用道具 举报
String s是一个声明,你可以把它看成是声明了一个引用;=null/=""是赋值,或者你可以看成是实例化。 在这个前提下,String s = null就是说,你将s这个引用指向了内存中一个空地址(没任何东西,null),而String s = ""则是表示你将s的引用指向了一个空字符串(有一个字符串对象,而且它的值是0长度的字符串)。

评分

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

查看全部评分

回复 使用道具 举报
1. string str = null是不给它分配内存空间,而string str=\"\"给它分配长度为空字符串的内存空间。
2. string str = null没有string对象, string str =""有一个字符串对象。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马