群里有一个小伙伴发了一段和小面差不多的代码啊,问了一个问题代码如下:

public static void main(String[] args) {
        doem01 doem01 = new doem01();
        Integer name = doem01.name();
        System.out.println(name);
    
    }

     public Integer name() {
        return null;
     }

这段代码毫无疑问,打出来的是null 群友问,为什么name中的return不报错啊,null不是string的默认值嘛然而我定义的是Integer 。这个是群友发的

 这时我也不知道啊,就百度寻找答案,万能的度娘告诉我:

值类型 : 默认值为0;

引用类型 :  默认值为null;

 下面的代码中,我们将Interger改成int类型:

public static void main(String[] args) {
        doem01 doem01 = new doem01();
        int name = doem01.name();
        System.out.println(name);
    
    }

     public Integer name() {
        return null;
     }

代码编译时不会报错,但运行的时候会报一个空指针的错误,为什么呢?因为Integer是int的封装类,编译器能够识别,但是它所调用的方法又是另一个,所以运行时

找不到那个方法所以报了一个空指针,代码如下:

public static void main(String[] args) {
        doem01 doem01 = new doem01();
        int name = doem01.name();
        Integer name1 = doem01.name1();
        System.out.println(name);
        System.out.println(name1);
    
    }

    private int name() {
        // TODO Auto-generated method stub
        return 0;
    }

     public Integer name1() {
        return null;
     }

如代码int 声明的调用的是 int name()这个方法 Integer声明的调用的是Integer name1()这个方法。在声明变量初始化时也是相同的道理,int声明的变量只能为int类型

而Integer出来int类型外,还可以定义为null。如下:

Integer a1 = null;
int a2 =null;  //这行会报错
int a3 =1;
int a4 = (Integer) null;

其他的基本数据类型也是如此。

个人学习,内容拙劣见谅

内容来源于网络如有侵权请私信删除
你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!

相关课程