由于对字符串为null和为“ ”两种状态理解理解很模糊,导致在写代码的时候一直报错,而且有点摸不着头脑,有些函数的参数是不能够为null的,因此如果获取到的值为null时会报错。但是有的情况又需要判断字符串的值是否为“ ”,如果对两者区分不准确必然会出现逻辑上的错误,于是自己参考别人的博客,希望自己以后不再犯类似的错误。
字符串为null和被赋值为“ ”时两种不同的状态。
比如String str = null;---------(1)
String str1 = "";---------(2)
(1)中栈里边会存在str,但是对里边没有对应的值,但是(2)中,栈中会存在str1,堆中也会存放对应的值""(空字符串);
<变量的声明会存放在栈中,变量对应的值会存放在堆内存中> <我们还可以联想到JVM相关的知识,比如垃圾回收机制等等>
(2)上边的赋值(1)中,因为str为null,因而不能够调用String的任何方法会报NullPointerException,而赋值语句(2)中的str1则可以调用String类的任何方法,不会报错。
<自己可以编写String的equals方法和==在使用过程中需要注意的地方>
随笔记下来,以后在使用过程中慢慢体会,对它的掌握更牢固一些。特别感谢前人的博客,大家共同进步。