zoukankan      html  css  js  c++  java
  • 空指针异常

    示例:

    /*
        空指针异常(NullPointerException)
        
        关于垃圾回收器:GC
            在java语言中,垃圾回收器主要针对的是堆内存。
            当一个java对象没有任何“引用”指向该对象的时候,GC会考虑将该垃圾数据释放回收掉。
            
        出现空指针异常的前提条件是?
            “空引用”访问实例【相关对象】相关的数据时,都会出现空指针异常。
    */
    public class NullPrinterTest{
        public static void main(String[] args){
            // 创建客户对象
            Customer c = new Customer();
            // 访问这个客户变量
            System.out.println(c.id);//0
            
            // 重新给id赋值
            c.id = 9521;//终身代号
            System.out.println("客户的id" + c.id);//0
            
            c = null;
            // java.lang.NullPointerException
            // 编译器没问题,因为编译器只检查语法,编译器发现c是Customer类型
            // Customer类型中有id属性,所以可以:c.id。语法过了。
            // 但是与运行的时候需要对象的存在,但是对象没了,尴尬了,就只能出现一个异常。
            System.out.println(c.id);
        }
    }
    class Customer{
        // 客户id
        int id;// 成员变量中的实例变量,应该先创建对象,然后通过“引用”的方式访问。
    }

    示例:

    public class T{
        A o1;
        public static void main(String[] args){
            D d = new D();
            C c = new C();
            B b = new B();
            A a = new A();
            T t = new T();
            
            // 这里不写代码会出现java.lang.NullPointerException异常。(空指针异常。)
            /*c.o4 = d;
            b.o3 = c;
            a.o2 = b;
            t.o1 = a;*/
            
            System.out.println(t.o1.o2.o3.o4.i);
        }
    }
    class A{
        B o2;
    }
    class B{
        C o3;
    }
    class C{
        D o4;
    }
    class D{
        int i;
    }
  • 相关阅读:
    新手第一次联系oracle的碰到的触发器不能创建的问题
    dubbo注册中心占位符无法解析问题(二)
    dubbo注册中心占位符无法解析问题(一)
    .
    Ubuntu16 安装后配置
    TiDB-----使用 TiUP cluster 在单机上模拟生产环境部署步骤
    TiDB 单机安装(在 Linux OS 上部署本地测试环境)
    WPF查找子控件和父控件方法
    Java基础相关
    C++ namespace浅析
  • 原文地址:https://www.cnblogs.com/xlwu/p/13053015.html
Copyright © 2011-2022 走看看