1.12 Java空对象(null)是怎么回事?
生活随笔
收集整理的這篇文章主要介紹了
1.12 Java空对象(null)是怎么回事?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Java 語言支持兩種數據類型,分別是基本數據類型和引用數據類型,而 null 是一種特殊的引用數據類型。本節主要介紹 Java 空對象是什么及如何判斷對象是否為空。
對象的實例化就是為對象開辟內存空間。
例如以下 3 條語句
Student stu = new Student(); // 語句1 Student stu2; // 語句2 stu2 = new Student(); // 語句3- 語句 1 先聲明一個 Student 類型的變量 stu,然后利用 new 關鍵字為其創建實例。一步到位,定義了一個實例變量并同時賦值。
- 語句 2 是聲明一個 Student 類型的變量 stu2,雖然從表述習慣上講 stu2 是實例變量,但實際上此時 stu2
并未成為一個真正的實例,它僅僅只是一個變量名字。 - 語句 3 中的 stu2 才成為了一個 Student 實例,它指向了內存中的某塊地址空間。
為了明確表示那些僅有名字而沒有內存空間的變量的具體內容,Java 引入了關鍵字 null。 null 表示“空”的意思,是絕對意義上的空,這個空指的是不存在。
一個引用變量(當變量指向一個對象時,這個變量就被稱為引用變量)沒有通過 new 分配內存空間,這個對象就是空對象,Java 使用關鍵字 null 表示空對象。示例代碼如下:
String str1= null; str1 = "歪比巴卜";注意:null 是關鍵字,是大小寫敏感的,不能將 null 寫成 Null 或 NULL。
引用變量的默認值是 null。當試圖調用一個空對象的屬性或方法時,會拋出空指針異常(NullPointerException),如下代碼所示:
String str1; // 相當于 String str1= null; // 輸出null字符串 System.out.println(str1); // 調用length()方法 int len = str1.length();第 5 行代碼不會發生編譯錯誤,但是當代碼運行到第 5 行時,系統會拋出空指針異常。這是因為調用 length() 方法時,str1 是空對象。程序員應該避免調用空對象的屬性和方法。
判斷一個對象是否為 null,可以用if (obj == null) { }來判斷
代碼如下:
// 判斷對象是否為null if (str1 != null) {int len = str1.length(); }如果把上面代碼改成如下代碼:
String str2 = ""; int num = str2.length(); System.out.println(num); // 輸出結果為0運行以上代碼時沒有拋出異常,因為 str2 是一個值為""的字符串對象。""表示的是一個長度為 0 的空字符串,它在內存中會被分配一個空間,str2 是直接指向""內存空間的實例化對象。
產生空對象主要有以下兩種可能性:
- 程序員自己忘記了實例化,所以程序員必須防止這種情況發生,應該仔細檢查自己的代碼,為自己創建的所有對象進行實例化并初始化。
- 空對象是其它地方傳遞過來的,需要通過判斷對象是否為 null 進行避免。
總結
以上是生活随笔為你收集整理的1.12 Java空对象(null)是怎么回事?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1.11 对象的销毁
- 下一篇: java美元兑换,(Java实现) 美元