• 简单聊聊Integer


    一、简单聊一下Integer

    Integer是Java 8大包装类之一(wrapper):也就是基本数据类型int的包装类,有些情况下需要把基本数据类型转成类,这就是包装类的作用了;
    在这里插入图片描述
    了解其他包装类:https://blog.csdn.net/qq_44715943/article/details/116331282

    二、Integer类常用方法

    在这里插入图片描述
    其中用的多的:

    • tobinarySring、parseInt、valueof、compare、toString

    三、 自动装箱拆箱

    自动装箱拆箱在集合中用的比较多:

    public static int testIntAddInMap(int i){
            Map map=new HashMap();
            map.put(i,i);
            return  0;
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    我们知道如果不用泛型,集合中默认都会将元素转成Onject类型,其中针对基本数据类型int:

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

    介于-128-127的int、byte直接指向方法区的常量池中存放的包装类对象。
    否则,还是创建新的Integer对象。
    涉及到Integer与Int进行计算时:Integer会调用其内部的initValue获取int值,如此才能与int进行计算。

    四、关于Integer与new Integer与Int以及equals和==

    equals: 比较的是所引用对象中的值,可以被重写。
    ==:比较的是所引用对象的内存地址,或者是基本数据类型的值。

    Integer i1 = 10;//this is autoboxing
    Integer i2 = 10;
    Integer i3 = 20;
    Integer i4 = new Integer(10);
    Integer i5 = new Integer(10);
    Integer i6 = new Integer(20);
        
    System.out.println(i1 == i2);//true    (1)
    System.out.println(i3 == i1 + i2);//true    (2)
    System.out.println(i1 == i4);//false    (3)
    System.out.println(i4 == i5);//false    (4)
    System.out.println(i6 == i4 + i5);//true    (5)
    System.out.println(20 == i4 + i5);//true    (6)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    public void testInteger(){
            //Integer
            //Integer
            int a=2;
            int aa=222;
            Integer bb=222;
            Integer d=2;
            Integer b=1;
            Integer c=new Integer(1);
            System.out.println(aa==bb);//ture 自动拆箱
            System.out.println(a==d);//ture
            System.out.println(a==b+c);//ture 自动拆箱
            System.out.println(b==c);//false
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    基本数据类型和常量池

  • 相关阅读:
    【设计模式】聊聊策略模式
    汇总区间(C++解法)
    怎么用JMeter写性能测试脚本
    光致发光荧光量子产率测试系统
    【软考 系统架构设计师】案例分析⑥ Web应用系统架构设计
    sqoop笔记(安装、配置及使用)
    Netty——NIO(Selector)
    Swagger系列:SpringBoot3.x中使用Knife4j
    C#操作Zip压缩的内部文件
    Linux下根目录都包含什么? 每个文件什么作用?
  • 原文地址:https://blog.csdn.net/weixin_44627672/article/details/126136235