标题:
深入【Java】底层细节知识点(7)null和“”的区别
[打印本页]
作者:
look_w
时间:
2018-12-15 13:20
标题:
深入【Java】底层细节知识点(7)null和“”的区别
七
、
n
u
l
l
和
“
”
的
区
别
本质区别:
null是没有地址的
“”是有地址的,里边的内容是空的
具体区别:
1、做成员变量(字段/属性/类变量)时,如果只写String str;那么是默认赋值为null的。null的话,你屏幕输出(toString方法)的结果为字符串null,而且其它调用str的操作,编译可通过,运行时会空指针异常,此时是异常。
2、做局部变量(方法里的变量)时,如果只写String str;是不会默认赋值null的,这里仅声明了一个str变量,在栈内存中有定义,但没有任何值,null其实也是一种值。此时任何调用str的操作,编译时就均会报错,是error,不是异常。
3、“”是空字符串,但也是字符串,没有什么东西。 而null是空的意思,什么都没有,没有地址
如果你直接输出str1,本质上其实是调用了toString方法。所以就会报错
也
就
是
说
,
你
对
没
有
地
址
的
东
西
做
做
操
作
(
除
了
=
)
,
就
会
报
错
String str = null;和String str1; 这两者也是不同的,前者是分配了内存,也就是说,你对他可以进行相关操作,而不会报错,后者是不可以的。
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0