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;

  • 相关阅读:
    电脑开不开机 且开且珍惜
    IA32系统级架构总览(二)
    IA32系统级架构总览(一) 实模式和保护模式
    Django 步骤
    【Python】使用Supervisor来管理Python的进程
    python json操作
    term2 配置
    被执行人查询
    Linux下redis的安装
    FTP命令
  • 原文地址:https://www.cnblogs.com/hujiapeng/p/5719634.html
Copyright © 2011-2022 走看看