equals方法避免空指標的比較方法

2021-09-25 05:12:17 字數 948 閱讀 4905

首先看個例子

public static void main(string args)

else

}面的兩句不同的比較語句測試,第一句不出現空指標異常,第二句出現。

所以在變數和常量比較的時候,一般把常量放在前面。為了避免空指標異常。

但是我的問題是:變數在前時候,讀到變數,變數為空,就出現異常了。

為什麼變數在後時候,a變數就不用讀了嗎?既然要比較肯定也要讀啊,問題

只是先後的問題。為什麼放在後面就就不報空指標呢?

看了一下string類的equals方法

public boolean equals(object anobject)

if (anobject instanceof string)

return true;}}

return false;

}原始碼我看了一下,也明白,但是在原始碼中如果anobject為空的時候,就不會出現空指標異常嗎 ?

後來經過一番討論後,我得出的結論是這樣的:

問題是出現在呼叫方法上了。因為null值,並不是乙個string物件。而你通過宣告的string物件引用去 呼叫了string物件的例項方法。當然不可以了。null呼叫了方法。

所以系統報出了,空指標異常。

使用isempty()是出現了空指標異常nullpointexception;

原來isempty()用來判斷乙個變數是否已經初始化了,因為「」和new 的時候系統都會為其分配記憶體,不管是否有值,當為null的時候,系統的不會為其分配記憶體,這是它是不存在的,如果呼叫isempty()方法時jdk根本不知道這是什麼所以會報空指標異常;

例子:(值).isempty()   如果值為null 會返回空指標異常

解決方法:

stringutils.isempty(值)
這種方法如果值是" ",null  都能返回true

寫錯equals方法引起的空指標異常

首發原文 http www.laozizhu.com view.jsp?articleid 60 情景上這樣的 我有乙個重寫了equals方法的類,該類原始碼如下。然後用一程式將此類多次迴圈put到hashmap中去,但每次put到1500次左右時,就會出現nullpointerexception。...

避免野指標的方法

野指標是沒有初始化的指標,它非法的指向一塊記憶體空間,會造成記憶體洩露,產生段錯誤。避免野指標有以下幾點 1 養成良好的變成習慣,當不能確定指標指向時,初始化為空 2 當給初始化指標賦值時,要用malloc給其分配記憶體空間。3 檢查空間是否分配成功 4 清理記憶體空間 5 使用完記憶體空間後釋放 ...

空指標(NULL pointer)解引用避免方法

什麼是解引用空指標?c語言中,如果乙個指標變數的值為null,解引用這個指標時,會導致程式崩潰 segmentation fault 如何防止解引用空指標?基本思路是在解引用指標前,先判斷是否為null,如果是null則不要解引用。但是c語言程式中,指標的使用非常多,在每次解引用之前都做判斷是非常低...