java:拆箱和装箱,缓存池概念简单介绍

1.基本数据类型及其包装类:

举例子:

复制代码
Integer i = 10;  //装箱
 
int n = i;   //拆箱

概念:

装箱就是自动将基本数据类型转换为包装器类型;

拆箱就是自动将包装器类型转换为基本数据类型;

复制代码
public class Main {
 
    public static void main(String[] args) {
         
        Integer i1 = 100;
        Integer i2 = 100;
        Integer i3 = 200;
        Integer i4 = 200;
 
        System.out.println(i1==i2);
        System.out.println(i3==i4);
    }
}

也许有些朋友会说都会输出false,或者也有朋友会说都会输出true。但是事实上输出结果是:

true

false

第一个用的是缓存池里的->优化,当我们传入一个在-128到127之间的整数时,编译器会在缓冲池中取出整数对应的Integer对象,因此多个 Integer 实例使用自动装箱来创建并且值相同,那么就会引用相同的对象,

否则超出范围就会创建一个新的对象。==判断的是地址,则i3和i4的地址不一样了**。**

2.缓存池:

在 Java 中,缓存池是一种用于提高性能和节省内存的机制。它通过在内存中缓存常用的对象,避免频繁创建和销毁对象,从而提高程序的效率。Java 的基本数据类型(如 Integer、Long、Boolean 等)都有相应的缓存池。

Integer 缓存池

以 Integer 为例,Java 在启动时会创建一个范围为 -128 到 127 的缓存池。当我们使用 Integer.valueOf() 方法获取整数对象时,如果该整数在缓存池范围内,则直接返回缓存中的对象;否则,创建一个新的对象并缓存起来。例如:

java 复制代码
Integer a = Integer.valueOf(123);

Integer b = Integer.valueOf(123);

System.out.println(a == b); // true



Integer c = new Integer(123);

Integer d = new Integer(123);

System.out.println(c == d); // false

在上述代码中,ab 使用了缓存池中的对象,因此它们是相同的对象;而 cd 是通过 new 关键字创建的新对象,因此它们是不同的对象。

相关推荐
sheji3416几秒前
【开题答辩全过程】以 基于JAVA的社团管理系统为例,包含答辩的问题和答案
java·开发语言
油丶酸萝卜别吃2 分钟前
lombok的几个核心注解是什么?
java·tomcat
周杰伦_Jay7 分钟前
【GOFrame】模块化框架与生产级实践
开发语言·gitlab·github
毕设源码-邱学长19 分钟前
【开题答辩全过程】以 个性化新闻推荐系统为例,包含答辩的问题和答案
java
Simon席玉19 分钟前
C++的命名重整
开发语言·c++·华为·harmonyos·arkts
chao18984419 分钟前
MATLAB中的多重网格算法与计算流体动力学
开发语言·算法·matlab
木盏20 分钟前
三维高斯的分裂
开发语言·python
a程序小傲26 分钟前
京东Java面试被问:ZGC的染色指针如何实现?内存屏障如何处理?
java·后端·python·面试
精神小伙就是猛27 分钟前
C# sealed密封 追本溯源
开发语言·c#
真正的醒悟38 分钟前
图解网络35
开发语言·网络·php