1、首先先理解这个三个变量的含义:
含义:
- 此时a是分配了内存空间,但值为空,是绝对的空,是一种有值(值存在为空而已)
- 此时b是分配了内存空间,值为空字符串,是相对的空,是一种有值(值存在为空字串)
- 此时c是未分配内存空间,无值,是一种无值(值不存在)
2.==和.equals()的区别
总结:对于== 比较的是栈内存中存放的引用堆内存中对象的引用地址,.equals()比较的是俩个值是否相等,而不是比地址。
3.TextUtils.isEmpty(str)和str.isEmpty()
总结:
str.isEmpty();则相当于只判断了str.length == 0。而当空(null)时 str.isEmpty() 会空指针异常。
所以我们可以用TextUtils.isEmpty(str)来代替if(text == null || text.length() == 0)
引用类型继承于Object类(也是引用类型)
常常有引用变量或是String类型变量设置为null,那么null指的是什么?我们看:A a = new A();那么这里a指向堆内存中实例化的A对象。
当a=null,a指向空!我们可以这样理解,null是没有地址,” “是有地址,但里面的内容为空。
- 基本数据类型:byte,short, int, long, float, double, char, boolean;
- 引用数据类型:String,引用变量;