Java中的null
- null是关键字,大小写敏感。
- null是任何
引用类型
的默认值。 - null既不是对象也不是一种类型,而是一种特殊的值,可以将其赋予任何引用类型(不能将null值赋给基础变量)。
- 任何含有null值的包装类在Java拆箱生成基本数据类型时候都会抛出一个空指针异常。
- 如果使用了带有null值的引用类型变量,instanceof操作将会返回false。
- 可以使用静态方法来使用一个值为null的引用类型变量。因为静态方法使用静态绑定,不会抛出空指针异常。
public class Testing {
public static void main(String args[]){
Testing myObject = null;
myObject.iAmStaticMethod();
myObject.iAmNonStaticMethod();
}
private static void iAmStaticMethod(){
System.out.println("I am static method, can be called by null reference");
}
private void iAmNonStaticMethod(){
System.out.println("I am NON static method, don't date to call me by null");
}
}
输出:
I am static method, can be called by null reference
Exception in thread "main" java.lang.NullPointerException at Testing.main(Testing.java:11)
避免空指针技巧
- equals()的正确使用。
- valueOf()或者(String)替换toString()。
- 使用Apache commons库来处理对象(第三方库已对空指针做校验)。
- 返回空的Collection或者Array来替换null。
- 使用注解:
@NotNull
、@Nullable
- 定义合理的默认值,遵守约定。
- 从数据库取数据,可约束哪些字段不能为空。