Java中的null

Java中的null

null设计的初衷是为了表示一些缺失的东西。

  1. null是关键字,大小写敏感。
  2. null是任何引用类型的默认值。
  3. null既不是对象也不是一种类型,而是一种特殊的值,可以将其赋予任何引用类型(不能将null值赋给基础变量)。
  4. 任何含有null值的包装类在Java拆箱生成基本数据类型时候都会抛出一个空指针异常。
  5. 如果使用了带有null值的引用类型变量,instanceof操作将会返回false。
  6. 可以使用静态方法来使用一个值为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)

避免空指针技巧

  1. equals()的正确使用。
  2. valueOf()或者(String)替换toString()。
  3. 使用Apache commons库来处理对象(第三方库已对空指针做校验)。
  4. 返回空的Collection或者Array来替换null。
  5. 使用注解:@NotNull@Nullable
  6. 定义合理的默认值,遵守约定。
  7. 从数据库取数据,可约束哪些字段不能为空。

你可能感兴趣的:(Java中的null)