zoukankan      html  css  js  c++  java
  • Integer大小比较问题

    public static void main(String[] args) throws NoSuchFieldException,
    IllegalAccessException {
    Integer a = 1000, b = 1000;
    System.out.println(a == b);//1
    Integer c = 100, d = 100;
    System.out.println(c == d);//2

    System.out.println(100 == 100); // 3
    System.out.println(1000 == 1000); // 4

    Class cache = Integer.class.getDeclaredClasses()[0];
    Field myCache = cache.getDeclaredField("cache");
    myCache.setAccessible(true);

    Integer[] newCache = (Integer[]) myCache.get(cache);
    newCache[132] = newCache[133];

    int a2 = 2;
    int b2 = a2 + a2;
    System.out.printf("%d + %d = %d", a2, a2, b2); // 5
    }

    控制台打印结果:

    false
    true
    true
    true
    2 + 2 = 5

    原因:对于Integer来说,-128-127之间的整型已经初始化放在IntegerCache中,如果是在这个范围内的话,其实引用的都是一个对象值,否则是不同的对象额

    所以如果不在这个范围内的话,比较Integer的话,是用equals()比较了额

  • 相关阅读:
    网络配置
    yum源配置
    linux压缩命令
    linux下创建和删除软、硬链接
    linux挂载光盘
    Linux-chmod_命令的详细用法讲解
    linux_rpm命令
    Linux_Vi_命令
    anglarJs前端控制器的继承
    angularJs分层服务开发
  • 原文地址:https://www.cnblogs.com/holdon521/p/4999779.html
Copyright © 2011-2022 走看看