空指標異常
這個異常屬於 runtimeexception 的子類,所以編譯的時候感覺沒啥問題,一執行崩潰了。為啥會出現這個異常,下面是我的個人理解。
原因:當乙個物件不存在(即物件==null)時,呼叫方法或者變數會出現空指標異常。
具體原因是,當物件為null時,堆記憶體存放物件屬性為空,而使用方法時
棧記憶體位址指向堆記憶體時發現啥都沒有(位址就是個空的),則會發生空指標異常。
左邊是棧記憶體,右上是堆記憶體,右下是方法區
空指標異常雷區
①使用equals方法時。
string str = null;
if(str.
equals
("test"))
str為null,呼叫equals方法時就發生了空指標異常。
②乙個陣列為null,試圖用屬性length獲得其長度時。
經常性的我們使用陣列來儲存物件,我們定義陣列時還不確定他的長度,就只寫了個
*陣列型別 [
] 陣列名;
*
如果還沒有賦值的時候,要用乙個變數去接受length的值,就會發生空指標異常。
③如果乙個陣列為null,試圖訪問或修改其中某個元素時。
這個和上面一樣,堆記憶體裡啥也沒有,執行時就崩潰了。
依然是**:
總而言之,在呼叫方法,或是訪問修改屬性時一定要注意該物件是否非空,如果為空,那麼就會出現異常。
關於空指標異常問題
一直都覺得空指標異常很好改,但是今天竟然調了一上午,鬱悶吶,因此開始總結教訓 首先svo是前端所傳的物件,判斷是否為空,如果為空則進行例項化 if svo null string project num svo.getprojectnum if project num.equals root nod...
空指標異常記錄
空指標異常是指 當應用程式試圖在需要物件的地方使用 null 時,丟擲該異常。也就是你沒有建立這個物件,你卻呼叫他,或者呼叫他的方法,或者訪問 修改他的屬性,這時會丟擲乙個空指標異常。我這兩天遇到的問題是,我傳入乙個為null的屬性,或者沒有傳入必要屬性,就會在return的地方報乙個空指標異常。注...
Android context空指標異常
fragment中的 context 是null public class placeholderfragment extends fragment 這樣定義的context是null。當然咯,我實際 不是這樣寫的,可是這個意思。假設是在activity中就不會是空。在fragment中就是null...