静态方法,静态方法使用静态绑定,不会抛出空指针异常。IsEmpty不是,所以引用null会抛出空指针异常。
IsEmpty()函数定义:
public boolean isEmpty() {
//String
return value.length == 0;//字符串得有长度,才能用。
//ArrayList,HashMap
return size == 0;
//HashSet
return map.isEmpty();
}
String str = new String();//调用的构造函数
public String() {
this.value = "".value;//明显是空串的值。
}
而空串是有长度(0)与内存分配的!!!
String s1 = new String();
String s2 = "";
if("".equals(s1)) {
System.out.println("s1是空串");
}
if("".equals(s2)) {
System.out.println("s2是空串");
}
运行结果:
s1是空串
s2是空串
null其实很好理解,还有一种特殊的 引用类型
。所谓引用数据类型就是对一个对象的引用,对象包括实例和数组两种。实际上,引用类型变量就是一个指针,只是 Java 语言里不再使用指针这个说法。
空类型(null type)就是 null 值的类型,这种类型没有名称。因为 null 类型没有名称,所以不可能声明一个 null 类型的变量或者转换到 null 类型。
(这里就说明了它是不会被分配内存的
。只是在堆里边引用一个地址)
空引用(null)是 null 类型变量唯一的值。空引用(null)可以转换为任何引用类型。java中的任何引用变量都将null作为默认值。
在实际开发中,程序员可以忽略 null 类型,假定 null 只是引用类型的一个特殊直接量。
注意:空引用(null)只能被转换成引用类型,不能转换成基本类型
,因此不要把一个 null 值赋给基本数据类型的变量。
最后记录一篇好文章java中的null类型—有关null的9件事