Java中的null值總結


自我總結,有什么不對或不到位的地方,請指出,感激不盡!

 

目的:熟練掌握java中null值出現的情況,避免NullPointerException

代碼環境准備:需要引入junit;將代碼package部分改成自己的package名。然后即可單元測試。

 

需要理解的概念:

包裝類:例如:Integer,Long,Double,Boolean等,對應的基本類型為:int,long,double,boolean等

自動裝箱:java提供的自動將基本類型的變量轉換成包裝類型的變量的功能。

自動拆箱:java提供的自動將包裝類型的變量轉換成基本類型的變量的功能。

 

上代碼:JavaNull.java

package com.core.test; import org.junit.Test; public class JavaNull { /*java version : 1.6 */
     
    public static String name; //模擬裝箱(該case僅是用來幫助理解自動裝箱過程)
 @Test public void test001(){ int a = 10 ; Integer A = Integer.valueOf(a); put(A); } //模擬拆箱(該case僅是用來幫助理解自動拆箱過程) //若包裝類型變量值為null,轉換成基本類型的變量時,不會賦值成對應的初值,會報NullPointException
 @Test public void test002(){ Integer A = null; int a = A.intValue();  //NullPointException
 put(a); } //String類型的對象判斷非空並且非空字符串,則如case test003所示即可
 @Test public void test003(){ String name = null ; if(null !=name && !name.isEmpty()){ put(null); } } //靜態變量未初始化,但不會報空指針異常,因為虛擬機在加載該類的同時,會初始化靜態變量值為null
 @Test public void test004(){ put(name); } //當Integer對象的值超過127時,引用對象不再指向原來的內存地址,所以case test005打印結果為:"a == b",test006打印結果為:"a != b" //當變量為引用類型時,"==" 判斷變量是否指向同一內存地址,".equal()"判斷變量的值是否相等
 @Test public void test005(){ Integer a = 100; Integer b = 100; if(a == b){ put("a == b"); }else{ put("a != b"); } } @Test public void test006(){ Integer a = 128; Integer b = 128; if(a == b){ put("a == b"); }else{ put("a != b"); } } //轉換(null值是所有引用類型的默認值,可以強制轉換為任一對象類型) //猜想:java中存在一個潛在的Null類概念,是所有引用類型的變量的子類,test008打印結果為:"test--null",說明存在一個潛在Null.toString方法
 @Test public void test007(){ String a = (String)null; Double b = (Double)null; } @Test public void test008(){ String temp = null; put("test--"+temp); } //靜態方法可以由類名直接調用,該case只是為了測試 //若對象test值為null,則用該對象調用靜態方法時,不會報NullPointException,但調用非靜態方法則會報NullPointException
 @Test public void test009(){ JavaNull test = null; test.getStaticMethod(); test.getNotStaticMethod();//NullPointException
 } //null值比較會返回true
 @Test public void test010(){ if(null == null ){ put("yes"); }else{ put("no"); } } //case test011和test012為instanceof的用法 //instanceof說明:如果 object 是 class 的一個實例,則 instanceof 運算符返回 true。如果 object 不是指定類的一個實例,或者 object 是 null,則返回 false
 @Test public void test011(){ // Integer num = null;
        Integer num = new Integer(0);; if(num instanceof Integer){ put("yes"); }else{ put("no"); } } //instanceof可以匹配數組
 @Test public void test012(){ String str[] = {"abc","bcd"}; if(str instanceof String[]){ put("yes"); }else{ put("no"); } } public static void getStaticMethod(){ put("StaticMethod"); } public void getNotStaticMethod(){ put("NotStaticMethod"); } public  static void put(Object obj){ System.out.println(obj); } }

 

以上是我的總結,參考文章:http://www.importnew.com/14229.html

               http://www.cnblogs.com/danne823/archive/2011/04/22/2025332.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM