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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 邓建军 中级黑马   /  2013-3-24 22:19  /  1425 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 邓建军 于 2013-3-25 17:30 编辑

string str=null与string str=""有什么区别?

评分

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

查看全部评分

7 个回复

倒序浏览
本帖最后由 许庭洲 于 2013-3-24 22:41 编辑

1. string str=null ;//将这个引用指向了一个null,该null没有地址和没有值的地方;
2. string str=" " ;//将这个引用指向了一个地址,该地址里面存的是空的字符。
回复 使用道具 举报
1.区别:
第一个是空引用,没有分配存储空间。不能调用String类的方法。
第二个是空串。分配了存储空间。
2.注意:
当这两个跟字符串相加时,null会被转换为字符串,这时候计算的结果会不同。
class Cece3
{
        public static void main(String[] args)
        {
               
                //String s = null;结果为nullab
                String s = "";//结果为ab
                String t = "ab";
                s = s + t;
                System.out.println(s);
        }
}

评分

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

查看全部评分

回复 使用道具 举报
null表示在内存中没有开辟空间。而string str=""表示内存为这个字符串开辟了空间,但是是空值。
回复 使用道具 举报
1 String str=null;
这句话的意思:定义了 引用变量str,不过 str 引用的字符串对象为空,没有分配内存空间。
即:若对 str 引用进行操作,那么将会抛出空指针引用异常(NullReferenceException);

2 String str="";
这句话的意思:定义了 引用变量str,并且 str 引用的字符串对象存在,其内容为"",在内存中分配了空间。
即:str.ToString() 的值为 "" ,其内容不为空。
回复 使用道具 举报
string=null没有在内存中分配空间,没有指向
string=""在内存中分配了空间
回复 使用道具 举报
string str=null 在内存中没有开辟空间,而string str="" 是在内存中开辟了一个空间存储""
回复 使用道具 举报
lixiaofeng 发表于 2013-3-24 22:39
1.区别:
第一个是空引用,没有分配存储空间。不能调用String类的方法。
第二个是空串。分配了存储空间。

System.out.println(s);这是JAVA里面的,应该是Console.WriteLine(s);
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马