zoukankan      html  css  js  c++  java
  • int和Integer的默认值

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

    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;

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

    个人学习,内容拙劣见谅

  • 相关阅读:
    ubuntu 系统 opencv3.1.0 安装
    tensorflow源代码方式安装
    tensorflow的Virtualenv安装方式安装
    深度学习框架Caffe的编译安装
    DMLC深度机器学习框架MXNet的编译安装
    Ubuntu上CUDA和CUDNN的安装
    CMU机器学习课程-简介
    多年心愿,终于完成,热泪盈眶啊。。。Adrew NG 的 机器学习
    Java实现web在线预览office文档与pdf文档实例
    使用FlashPaper在线转换.doc为.swf_实用技巧
  • 原文地址:https://www.cnblogs.com/2979100039-qq-con/p/13071945.html
Copyright © 2011-2022 走看看