Java中的null
- null是關鍵字根竿,大小寫敏感礁扮。
- null是任何
引用類型
的默認值。 - null既不是對象也不是一種類型岁忘,而是一種特殊的值辛慰,可以將其賦予任何引用類型(不能將null值賦給基礎變量)。
- 任何含有null值的包裝類在Java拆箱生成基本數(shù)據(jù)類型時候都會拋出一個空指針異常干像。
- 如果使用了帶有null值的引用類型變量帅腌,instanceof操作將會返回false。
- 可以使用靜態(tài)方法來使用一個值為null的引用類型變量麻汰。因為靜態(tài)方法使用靜態(tài)綁定速客,不會拋出空指針異常。
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
- 定義合理的默認值乱灵,遵守約定。
- 從數(shù)據(jù)庫取數(shù)據(jù)七冲,可約束哪些字段不能為空痛倚。