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

 

你可能感兴趣的:(Java中的null值总结)