zoukankan      html  css  js  c++  java
  • int和integer的比较

    程序代码:

            Integer i01 = 59;
            int i02 = 59;
            Integer i03 =Integer.valueOf(59);
            Integer i04 = new Integer(59);
            
            System.out.println(i01==i02);
            System.out.println(i01==i03);
            System.out.println(i03==i04);
            System.out.println(i02==i04);

    输出:
    true
    true
    false
    true

      JVM中一个字节以下的整型数据会在JVM启动的时候加载进内存,除非用new Integer()显式的创建对象,否则都是同一个对象
      所有只有i04是一个新对象,其他都是同一个对象。所有A,B选项为true
      C选项i03和i04是两个不同的对象,返回false
      D选项i02是基本数据类型,比较的时候比较的是数值,返回true
     

    是否存在此对象,如果存在,则直接返回引用,否则,创建一个新的对象。

    在这里的话,因为程序初次运行,没有   59   ,所以,直接创建了一个新的对象。

    int i02=59   ,这是一个基本类型,存储在栈中。

    Integer i03 =Integer.valueOf(59);   因为   IntegerCache   中已经存在此对象,所以,直接返回引用。

    Integer i04 =       new     Integer(59)   ;直接创建一个新的对象。

    System.       out     .println(i01== i02); i01   是   Integer   对象,   i02   是   int   ,这里比较的不是地址,而是值。   Integer   会自动拆箱成   int   ,然后进行值的比较。所以,为真。

    System.       out     .println(i01== i03);   因为   i03   返回的是   i01   的引用,所以,为真。

    System.       out     .println(i03==i04);   因为   i04   是重新创建的对象,所以   i03,i04   是指向不同的对象,因此比较结果为假。

    System.       out     .println(i02== i04);   因为   i02   是基本类型,所以此时   i04   会自动拆箱,进行值比较,所以,结果为真。

  • 相关阅读:
    latex How do I know what symbols/characters are available in a font package
    fun字形
    inspection tool
    msys2 安装 基本配置
    R语言 测试 训练步骤
    R 语言描述性 数据分析 步骤
    如何构建分类模型
    史上最酷的数学动态图
    极大似然估计四个步骤
    react 组件间参数传递
  • 原文地址:https://www.cnblogs.com/Berryxiong/p/6138016.html
Copyright © 2011-2022 走看看