JAVA類型有基礎變量類型、引用類型。
null的問題:
JAVA類型有基礎變量類型、引用類型。
這裏寫圖片描述
(1)對基礎變量類型,如果未經初始化JAVA會自動開辟空間並賦值。int、byte、short、long為0;float、double為0.0;boolean為false。
(2)對引用變量類型,JAVA同樣會對未經初始化的變量自動賦值,為NULL。
(因為NULL指的是不確定對象,所以適用於引用類型,不適用於基礎變量類型。)
再說NullPointerException異常
指針,就是java中的對象的引用。比如String a;這個a就是指針。
空指針NullPointer,指針的內容為空,比如指針a,如果令它指向null,就是空指針。
空指針異常NullPointerException,一個指針為NULL。本身對象就為空了,沒有方法給你調用,你在使用該對象的方法,就強人所難了。再說未經初始化的變量JAVA會自動報錯。比如String a=null,你還要用a的方法,比如a.equals( String x);那就會產生空指針異常。
項目中遇到很多了NullPointerException問題,大致一下集中情況:
(1)定義了一個對象引用,但是沒有new 直接拿過來使用。比如String a = null,List list = null;
(2) 沒有考慮是否為空,直接獲取或者返回的對象為空。直接使用該對象。
空問題:
空值一般是指對象的參數值為空字符串,比如,obj.value=”;而null一般是指對象為空,即obj = null;
一個對象為null,肯定取不到它的所有參數值;若對象不為空,取到它的某個參數的值也可能為空的。
比如,
(2)整型Integer
if (id == null) {
throw new Exception("參數不能為空!");
這裏我就習慣用了“”.quals(id)去判空,被team笑了小半年。整型不需要”“.equal(id),整型是不能為空的。項目中使用了Integer類型,Integer是包括基本類型int的包裝類,不給賦值的時候為null。而int基本類型初始化是不為空的。兩種情況加起來,integer只需要判斷null值就可以。
(3)list類型不為空
if (CollectionUtils.isEmpty(list)) {
throw new Exception("參數異常!www.kaixinyle.com ");
源碼:
public static boolean isEmpty(www.thylpt1.com Collection<?> collection) {
return (collection == null || collection.isEmpty());
}
public boolean isEmpty(www.2018yulpt.com) {
return size() == 0;
8
(3)map不為空
if (CollectionUtils.isEmpty(existMap)) {
}
if (existMap.isEmpty(www.yinfenyule.com )) {
//這種也會報錯。
}
JAVA類型有基礎變量類型、引用類型。