“”和null的区别

这个问题之前已经搞定了,奈何最近又有一点迷糊,特此总结一下。

这里有几种声明方式:

	①	String a = null;              
	②	String b = "";			
	③	String e = "";			
	④	String c = new String("");		      
	⑤	String d = new String();		       
	⑥	String f;					

①方式,声明了一个引用为a,并且将其初始化。值为null代表了a未指向任何对象。因此这条语句我们可以认为分2步去理解:第一,声明一个字符串类型的引用a;第二步,将这个引用初始化,并且让它不指向任何对象。(注意:这一步并没有在堆中创建对象)

②方式,声明了一个引用为b,并且将引用初始化之后指向值为“”的对象。这条语句可以分为三步去理解:第一步,声明一个字符串类型的引用b;第二步,在堆中创建一个值为“”的对象;第三步,将b初始化为指向第二步中创建的对象的引用。

③方式:同②。不过这里有涉及到常量池的相关内容。这里不再赘述。

④方式:同②,不过这里又重新创建了一个 值为“”的对象。

⑤方式:同②,不过新创建的对象值被初始化为“”;

⑥方式:这条语句只是声明了一个字符串类型的引用。仅此一步而已,并没有对该引用进行初始化。而在JAVA中是不允许内存未被初始化就被使用的,因此如果使用f会出现空指针异常。

另外,因为①和⑥方式均未创建对象,因此无法通过a和f调用String类的有关方法,否则会产生空指针异常。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值