当前位置: 首页 > article >正文

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() 方法获取整数对象时,如果该整数在缓存池范围内,则直接返回缓存中的对象;否则,创建一个新的对象并缓存起来。例如:

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

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

 


http://www.kler.cn/a/411159.html

相关文章:

  • 所有位运算 详解
  • rabbitmq 启动异常问题排查
  • 【测试工具JMeter篇】JMeter性能测试入门级教程(一)出炉,测试君请各位收藏了!!!
  • Matlab 深度学习 PINN测试与学习
  • vim 一次注释多行 的几种方法
  • 设计模式之 模板方法模式
  • 基于springboot的HttpClient、OKhttp、RestTemplate对比
  • intellij idea控制台 visual stadio dev c++ keil pycharm python 输出乱码解决方案最终版 java
  • Springboot自带注解@Scheduled实现定时任务
  • 自动泊车“哐哐撞大墙”,小米SU7智驾功能bug缠身?
  • 组合模式详解及Java实现
  • 【环境搭建】更新Docker Compose到v2.x版本以支持--profile选项
  • HTML 常用标签属性汇总一〈body〉标签
  • Cocos编辑器
  • 【算法一周目】滑动窗口(2)
  • Linux宝塔部署wordpress网站更换服务器IP后无法访问管理后台和打开网站页面显示错乱
  • C语言函数递归经典题型——汉诺塔问题
  • 【博主推荐】C#的winfrom应用中datagridview常见问题及解决方案汇总
  • Qt SQL模块概述
  • 【数据结构实战篇】用C语言实现你的私有队列
  • SpringBoot使用MySQL数据库,配置alibaba druid数据库连接池
  • 力扣 73. 矩阵置零
  • 【vue3实现微信小程序】每日专题与分页跳转的初步实现
  • 微服务篇-深入了解使用 RestTemplate 远程调用、Nacos 注册中心基本原理与使用、OpenFeign 的基本使用
  • 【Unity3D】创建自定义字体
  • C语言实例之9斐波那契数列实现