Java中的null

    xiaoxiao2021-04-04  31

    package testnull; import org.junit.Test; /** * <strong>java中的null测试,注意:</strong> * <br>1.JVM中null规范:没有强制规定null应该是什么值,即:JVM没有给它分配内存(赋值null_清空对象) * <br>2.null不是对象或类型,没有分配内存,是一个特殊的值 * <br>3.引用类型默认值是null * <br>4.基本类型不能赋值为null * <br>5.null值的包装类拆箱生成基本数据类型,会抛出空指针异常 * <br>6.引用类型变量值为null时,instanceof都会返回false * <br>7.null值的引用变量,调用非静态方法,会抛出空指针异常(静态方法使用静态绑定,不会抛出空指针异常) * <br>8.null值的逻辑运算:只能是==或!= * <br> * <br><strong>java中null和JS中null的区别:</strong> * <br>1.java中null不是对象或类型,没有分配内存,是一个特殊的值 * <br>2.JS中null是一种特殊的Object,且undefined与null是相等的 * <br> * <br><strong>java中null和""的区别:</strong> * <br>1.null不是对象或类型,没有分配内存,是一个特殊的值 * <br>2.""是String对象,长度为0的字符串对象 * <br> * <br><strong>参考资料:</strong> * <br>1.Java中null规范:http://www.programcreek.com/2013/12/what-exactly-is-null-in-java/ * <br>2.http://www.importnew.com/14229.html * <br>3.http://www.cnblogs.com/hanruyue/p/6024781.html * <br>4.JS中undefined与null的区别:http://www.jb51.net/article/44472.htm * @author TCM * @since 2017年4月5日下午7:36:50 */ public class NullTest { private Object obj; /** * 任何引用类型的默认值为null */ @Test public void nullTest1(){ System.out.println(obj ==null ? "obj为null" : "obj不为null");//null } /** * 注意:null既不是对象也不是一种类型,它仅是一种特殊的值<br> * 1.null赋值给任何引用类型<br> * 2.null可以转换为任何引用类型<br> * 3.null不能赋值给基本类型变量(8种基本类型_int,double......) */ @Test public void nullTest2(){ //int i = null; Integer itr = null;//null赋值给任何引用类型 Integer myItr = (Integer) null;//null可以转换为任何引用类型 System.out.println(itr ==null ? "itr为null" : "itr不为null"); System.out.println(myItr ==null ? "myItr为null" : "myItr不为null"); } /** * null值的包装类拆箱生成基本数据类型抛出空指针异常<br> * 错误认知:自动装箱会将null转换成各自基本类型的默认值 */ @Test(expected = NullPointerException.class) public void nullTest3(){ Integer itr = null; int i = itr;//报错:空指针异常 } /** * null值的引用类型变量,instanceof都会返回false */ @Test public void nullTest4(){ Integer itr = null; if (itr instanceof Integer) { System.out.println("itr类型是Integer"); } else { System.out.println("itr类型不是Integer"); } } /** * 1.null值的引用变量,调用非静态方法,会抛出空指针异常 * 2.静态方法使用静态绑定,不会抛出空指针异常 */ @Test public void nullTest5(){ NullTest testing = null; testing.isStaticMethod();//null值的引用变量,调用静态方法使用静态绑定,不会抛出空指针异常 testing.isNotStaticMethod();//null值的引用变量,调用非静态方法,会抛出空指针异常 } private static void isStaticMethod(){ System.out.println("我是静态方法,不会抛出空指针异常"); } private void isNotStaticMethod(){ System.out.println("我不是静态方法,会抛出空指针异常"); } /** * null值的逻辑运算:只能是==或!=,不能是其他的逻辑运算(如:>,>=) */ @Test public void nullTest6(){ Integer itr = null; if (itr == null) { System.out.println("java中null==null为true"); } } }
    转载请注明原文地址: https://ju.6miu.com/read-666224.html

    最新回复(0)