• 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;

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

    个人学习,内容拙劣见谅

  • 相关阅读:
    Mybatis用指定的环境Id配置
    Mybatis入门1
    Mybatis入门2把获取SqlSession的方法封装成工具类
    Java读取Resources文件为InputStream的几种方式
    Mybatis开启日志并使用logback
    road map main principle
    IIS使用ftp服务器遇到的问题
    学习中遇到的想法笔记
    latex related info
    2022年8月调试成功的选股公式,跳空缺口不补的公式,公式名字tkgk2
  • 原文地址:https://www.cnblogs.com/2979100039-qq-con/p/13071945.html
Copyright © 2020-2023  润新知