zoukankan      html  css  js  c++  java
  • int和Integer的区别

    大部分人知道的是:

        1.int是基本类型,直接存数值,进行初始化时其值为0;

        2.Integer是引用数据类型,进行初始化时其值为null;

    但由于底层源码的原因,源码如下:

             

    1 public static Integer valueOf(int i) {
    2         assert IntegerCache.high >= 127;
    3         if (i >= IntegerCache.low && i <= IntegerCache.high)
    4             return IntegerCache.cache[i + (-IntegerCache.low)];
    5         return new Integer(i);
    6    }

    所以在Integer与Integer比较的情况中:

    1 int i = 128; 
    2 Integer i2 = 128; 
    3 Integer i3 = new Integer(128); 

    1.无论如何,Integer与new Integer不会相等。他们的内存地址不一样,所以为false;

    2.两个都不是new出来的integer对象,如果数在-128到127之间,则是true,否则为false。因为例如java在编译Integer i = 128的时候,被翻译成-> Integer i = Integer.valueOf(128);而valueOf()函数会对-128到127之间的数进行缓存;

    3.两个integer对象都是new出来的,则结果都为false;

    4.数值相同的int和integer对象(无论是否new)比,都为true,因为会把Integer自动拆箱为int再去比.

  • 相关阅读:
    hibernate 联合主键
    hibernate主键生成策略
    SpringMVC 的RequestMapping
    RestController 和Controller的区别
    进程&线程&协程
    mac 上好用的软件
    这世界上最激动的事,就是自己把握自己的人生!
    GO 语言学习之结构体
    ubuntu 批量杀死包含指定名称的进程
    vim
  • 原文地址:https://www.cnblogs.com/Ericzya/p/7792157.html
Copyright © 2011-2022 走看看