zoukankan      html  css  js  c++  java
  • Integer 与int 赋值比较

    测试代码:

     @Test
        public void IntegerTest() {
            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

    断点调试分析结果:

    i01是引用类型,如图引用的地址为Integer@651

    i02是值类型

    i03是引用类型,因为引用类型值放在堆里面,如果堆里有值,i03这种取值方式就直接引用原有值的地址Integer@651

    i04是引用类型,但是i04是new创建新对象,要在堆里新开空间存放值,也就会有新地址Integer@652

    i01与i02比较,引用类型和值类型用等号比较,比较的是值(引用类型自动拆箱为int),故返回true;

    i01与i03比较,引用类型和引用类型用等号比较,比较的是地址,两个地址一样,故返回true;

    i03与i04比较,引用类型和引用类型用等号比较,比较的是地址,两个地址不同,故返回false;

    i02与i04比较,值类型与引用类型用等号比较,比较的是值(引用类型自动拆箱为int),故返回true;

  • 相关阅读:
    mcstructs使用CMake生成Makefile文件
    打印man手册为pdf文件
    ubuntu安装wine之后进不了系统
    如何知道自己梦呓的内容
    Opencv step by step
    Opencv step by step
    树莓派实现只有一个按键的播放器
    virtualbox 打不开ubuntu解决
    wifi使用的一些误区
    Opencv step by step
  • 原文地址:https://www.cnblogs.com/hujiapeng/p/5719634.html
Copyright © 2011-2022 走看看