“”和null的区别

本文详细解释了六种Java中声明字符串的方式,包括不同初始化方法的影响,如设置为null、空字符串及通过new关键字创建对象的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

这里有几种声明方式:

	①	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类的有关方法,否则会产生空指针异常。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值