深入【Java】底层细节知识点(7)null和“”的区别
- UID
- 1066743
|
深入【Java】底层细节知识点(7)null和“”的区别
七、null和“”的区别
本质区别:
- 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; 这两者也是不同的,前者是分配了内存,也就是说,你对他可以进行相关操作,而不会报错,后者是不可以的。 |
|
|
|
|
|