172.16.0.151_20200908-陈政平

问题

    public static void main(String[] args) {
    Collection<String> c = null ;
    
    // 引用变量中存储的值就是null
    System.out.println( c ); // c == null ? "null" : c.toString()
    // System.out.println( c.isEmpty() ); // java.lang.NullPointerException
    
    //接口类型的引用变量指向了实现类类型的对象
    c = new ArrayList<>(); 
    // 引用变量中存储了堆区对象的地址
    System.out.println( c ); // c == null ? "null" : c.toString()
    // 但是堆区中的集合对象尚未存放任何元素
    System.out.println( c.isEmpty() );
    }

System.out.println( c.isEmpty() ); // java.lang.NullPointerException

这里为什么输出空指针异常?

原因是没有实现类去实现接口,接口引用变量中存储的值就是null,这个值没有指向任何内存,所以返回空指针异常。不知道这样解释对不对。

吐槽