Integer对象初始化过程[缓存机制]

Anomalib库安装以及使用 Anomalib是一个专注于异常检测的深度学习库。它的目标是收集最新的异常检测算法,并提供用于在公共和私有数据集上进行基准测试的工具。该库提供了一系列已实现的异常检测算法,这些算法在最近的文献中有所描述。此外,Anomalib还提供了一套工具,方便开发人员开发和实现自定义模型。该库特别注重基于图像的异常检测,旨在识别数据集中的异常图像或图像中的异常像素区域。通过使用Anomalib,用户可以快速构建和评估各种异常检测算法,以满足其特定需求。 阅读详情

首先我们先来看一个代码,关于Integer通过 ‘=’ 直接赋值:

public class Main {


    public static void main(String[] args) {

        Integer f1 = 100;
        Integer f2 = 100;
        Integer f3 = 200;
        Integer f4 = 200;

        System. out.println( f1 == f2); //true
        System. out.println( f3 == f4); //false
    }
}

同样是通过‘=’来赋值为什么会有这样的结果?
答:Integer赋予一个int类型的时候(通过‘=’赋值)会调用Integer的静态方法valueOf
等同于下面的代码

public class Main {


    public static void main(String[] args) {

        Integer f1 = Integer.valueOf(100); 
		Integer f2 = Integer.valueOf(100); 
		Integer f3 = Integer.valueOf(200); 
		Integer f4 = Integer.valueOf(200); 

        System. out.println( f1 == f2); //true
        System. out.println( f3 == f4); //false
    }
}

思考:那么Integer.valueOf()返回的Integer是不是是重新new Integer(num);来创建的呢?如果是这样的话,那么== 比较返回都是false,因为他们引用的堆地址不一样。
具体来看看Integer.valueOf的源码

public static Integer valueOf(int i) {

        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
}

可以看出来值在一个区间内不会去new一个新的对象;这个范围规范是-128~127;
那么不new一个新对象在哪里取值尼,在IntegerCache中cache数组初始化如下,存入了-128 - 127的值

cache = new Integer[(high - low) + 1];
int j = low;
for( int k = 0; k < cache.length ; k ++)
    cache[k] =
    cache[k] = new Integer(j ++);

从上面我们可以知道给Interger 赋予的int数值在-128 - 127的时候,直接从cache中获取,这些cache引用对Integer对象地址是不变的,但是不在这个范围内的数字,则new Integer(i) 这个地址是新的地址,不可能一样的.

STM32实现简单的智能电梯控制 上述代码实现了一个简单的智能电梯控制器。电梯的状态包括IDLE(停止)、UP(向上移动)和DOWN(向下移动)三种状态。通过向上和向下按钮的按下,可以控制电梯移动到指定的楼层。在主循环中,不断读取当前楼层的按钮状态,并根据电梯状态决定执行的动作。具体的楼层数量和按钮的GPIO引脚可以根据实际情况进行调整。要实现简单的智能电梯控制,我们可以使用STM32微控制器来实现。 阅读详情

相关推荐

Zemax实现微透镜阵列光束整形(原理+仿真)

通过Zemax实现微透镜阵列的光场整形仿真。

VJCP_90909Bu0的博客 1万+

Integer初始化

Integer的valueOf()在-128~127之间时会使用Integer内部类IntegerCache,这时新创建的Integer对象中保存的是cache数组中某个元素的引用。所以integer == integer1为true,由于引用同一对象,地址相同。 public class Test { public static void main(String[] args) { Integer integer = 127; Integer integer1 =

鹿与森的博客 1979

开源onlyoffice编译完整过坑版

onlyoffice 编译过坑完整版;

sHImart 4551

java数组三种初始化方式和list的六种赋值方式

java数组三种初始化方式 public static void main(String[] args) { //第一种数组初始化 Integer[] ints1 = {1,2,3}; //第二种数组初始化 Integer[] ints2 = new Integer[]{4,5,6}; //第三种数组初始化 Integer[] ints3 = new Integer[3]; for (int i

weixin_43177753的博客 3570

FPGA_adc采样并通过以太网发送到上位机

本项目使用FPGA-ZYNQ-7020采集8通道ADC数据,通过以太网上传到上位机显示波形PL部分包括数据的获取与处理,数据从PL传递到PSPS部分包括以太网的发送,由PL到PS的中断触发本文章不详细讲解背后原理 但保证每一步足够详细,跟着就能实现。本人FPGA平台 大磊FPGA7020开发板 vivado2020.2 vitis2020.2 匿名上位机公开版

weixin_42304868的博客 5623

从原理到实践:详解RGBD相机深度与彩色图像对齐(D2C)算法

本文深入解析了RGBD相机深度与彩色图像对齐(D2C)算法的原理与实现。针对自组装相机中深度图与彩色图不匹配的核心痛点,文章从相机模型、坐标系变换等数学基础讲起,剖析了传统点映射算法的缺陷,并重点介绍了高效的矩形区域映射算法。该算法通过将深度像素视为矩形区域进行映射,有效解决了空洞和遮挡问题,并附有可直接复用的C++代码与优化技巧,为三维重建、机器人视觉等应用奠定坚实基础。

weixin_28363123的博客 241

初始化与清理(5):数组初始化、可变参数列表

数组只是相同类型的、用一个标识符名称封装到一起的对象序列或基本类型数据序列。数组是通过方括号下标操作符[]来定义和使用的。int[] a1;int a1[];两种格式含义是一样的,前一种格式或许更合理,毕竟它表明类型是“一个int型数组”。编译器不允许指定数组的大小。这就又把我们带回到有关“引用”的问题上。现在拥有的只是对数组的一个引用(你已经为该引用分配了足够的存储空间),而且也没给数组对象本身分配任何空间。为了给数组创建相应的存储空间,必须写初始化表达式。

游王子og的博客 5021

【DRAM存储器五十六】LPDDR5介绍--WCK2CK Leveling和Read gate training

简述LPDDR5 WCK2CK leveling和read gate traning基本原理与操作步骤

highman110的博客 8787

Integer你真的了解吗,快来瞅瞅吧

//首先我们看一下代码 Integer a1=new Integer(10); Integer a2=new Integer(10); Integer a3=10; int a4=10; Integer a5=10; Integer a6=1232; Integer a7=1232; System.out.println("a1==a2:"+(a1==a2));//false 分析:a1和...

jackl 1183

14、X射线图像处理与特征提取全解析

本文全面解析了X射线图像处理与特征提取的关键技术,涵盖图像预处理、滤波、边缘检测、分割与恢复等流程,并深入探讨了几何特征(如面积、周长、圆度、椭圆拟合)、强度特征(均值、方差、对比度)、傅里叶描述符、不变矩(Hu矩、Gupta矩)以及局部描述符(SIFT、SURF)和稀疏表示方法。同时介绍了特征选择的过滤法、包装法和嵌入法,并结合Matlab代码示例展示了各类特征的实际提取过程。文章最后总结了当前技术的应用现状,并展望了深度学习在X射线图像分析中的未来潜力。

pz89012345的博客 133

微信小程序 - 最新详细实现 “餐厅食堂外卖点餐“ 全屏左右联动菜单列表功能界面,附带搜索框、购物车功能、商品加减计算金额、折扣等,左侧商品分类,右侧列表数据,仿美团饿了么外卖点餐页面,饭店扫码点餐!

微信小程序,vue2,vue3,左右联动菜单,商品分类页面,点餐界面,美团外卖点餐,左右布局界面,饿了么点餐页面,左分类右列表,小程序实现左侧菜单,外卖点餐联动,锚点,点击左侧大类后侧列表跟着变跟着刷新,菜单左右联动效果,左菜单右边列表数据,uniapp,左侧菜单,右侧列表双向联动效果,右侧商品滑动时,右侧列表双向联动效果,侧边菜单和右边滚动条,电商项目,购物车,商品加减计算,外卖选餐页面带购物车计算,自动计算金额,微信小程序外卖点餐界面源码,店铺页面滑动左右联动,点餐类小程序界面,堂食,扫码点餐,餐饮行业

🏆 前端领域优质创作者 5158

java integer初始化_JAVA 基础之Integer

jdk1.5后增加了自动拆箱和自动装箱特性。java的八种 byte,short,int,long,float,double,char,boolean基本类型和各自对应的包装类型的相互转化。装箱指的是 int类型 变为 Integer实例对象,拆箱指的是 Integer实例 变为 int类型。java.lang包下的类Integer。作为int基本类型的封装类。有以下特点。一、Integer a ...

weixin_42492543的博客 1519

YoloV8改进策略:基于双层路由注意力的视觉Transformer提升YoloV8的检测能力

本文使用2023年最新提出的BiFormer,实现对YoloV8的改进。目前,BiFormer还有在显存占用,还有性能存在问题。我们先试试效果,期待作者在Pytoch上早日实现优化。论文链接:https://arxiv.org/abs/2303.08810代码链接:https://github.com/rayleizhu/BiFormer作为视觉transformer的核心构建模块,注意力是捕捉长程依赖关系的强大工具。

m0_47867638的博客 2844

Integer对象初始化过程及缓存机制

在使用Integer对象进行整形变量数据操作时,发现了一个小问题1. 问题起因Integer对象通过等号“=”进行赋值初始化时,当数据比较小的时候,赋值相同的两个Integer对象使用“==”进行相等判断时,是能够正确返回判断结果的,但是数据较大的时候就不能返回正确结果了,这个数据阈值经过测试是-128~127,在这个范围内可返回正确的判断结果,超出这个范围就不行了,例子如下:public cla...

qq_27961111的博客 580

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Integer的缓存机制

摘自:https://www.dutycode.com/xijie_baozhuanglei_huancun_jizhi_integer_huancun.html Integer的缓存机制:Integer是对小数据(-128~127)是有缓存的,再jvm初始化的时候,数据-128~127之间的数字便被缓存到了本地内存中,如果初始化-128~127之间的数字,会直接从内存中取出,不需要新建一...

weixin_30861797的博客 85

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

java integer 缓存_java基础---Integer缓存机制---Integer缓存机制

上面的规则适用于整数区间 -128 到 +127。因为Integer.valueof就是缓存策略执行的地方===Integer.valueof(int i)public static Integer valueOf(int i) {if (i &gt;= IntegerCache.low &amp;&amp; i &lt;= IntegerCache.high)re...

weixin_36046580的博客 197

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Java(47):解剖 Integer 等包装类的自动装箱拆箱和jvm缓存机制

目录 写在开头 Integer包装类的缓存机制 Integer源码(节选) 其他包装类的缓存行为 自动装箱 Integer初始化的三种方式 比较运算符的应用 参考文章: 写在开头 自动装箱和拆箱、for循环都是java语言的语法糖!! 《深入理解JVM虚拟机》 Integer包装类的缓存机制 Integer的缓存机制: Integer是对小数据(-128~127)是...

Diligence is the mother of success. 577

Integer缓存

Integer的缓存机制问题: Integer是对小数据(-128127)是有缓存的,在jvm初始化的时候,数据-128127之间的数字便被缓存到了本地内存中,这样,如果初始化-128~127之间的数字,便会直接从内存中取出,而不需要再新建一个对象。 使用缓存时对象的初始化方式仅限于下面这两种: Integer a=100; Integer b=Integer.valueOf(100); 所以,100这个数字再-128~127之间,那么a和b实际上是引用的是一个内存地址,那么a==b自然就是true了。 I

qq_37450492的博客 426

integer a=100与integer b=100比较为true,integer a=300与integer b =300比较为false

Integer a=100与Integer b=100比较为true,Integer a=300与Integer b =300比较为false 案例一: Integer a = 100; Integer b = 100; System.out.println(a==b); // true 案例二: Integer a = 300; Integer b = 300; System.out.println(a==b); // false 案例三: int c = 100; int d = 100; S

qq_35102098的博客 3070

Integer的缓存池

Integer的缓存池 1 定义:Integer中定义了-128~127的初始化,如果存入的值在这个范围内,就不用新创建,直接指向内存中初始化好的值。在jdk源码中缓存池表现在一个静态内部类中(如下): private static class IntegerCache { static final int low = -128; static final int high; static final Integer cache[]; static { // high v...

qq_51012353的博客 387

Integer缓存机制

缓存机制:缓存了从 -128 到 127 内的所有 Long 值,如果是这个范围内的 Long 值,就不会初始化,而是从缓存中拿。 源码如下 private static class LongCache { private LongCache(){} //数组存储值 static final Long cache[] = new Long[-(-128) + 127 + 1]; //将-128~127值存储到cache中 sta

m0_50574545的博客 223

Java中Integer和int的区别

int 是基本类型,直接存数值   integer是对象,用一个引用指向这个对象   1.Java 中的数据类型分为基本数据类型和复杂数据类型   int 是前者>>integer 是后者(也就是一个类)   2.初始化时>>   int i =1;   Integer i= new Integer(1);(要把integer 当做一个类看)   int 是基本数据类型(面向过程留下

386

个人整理总结:java面试题之int和Integer的区别

一、int和Integer的区别:1. Integer是int的包装类,Integer也是一个类,int则是java的一种基本数据类型 2. Integer变量必须实例化后才能使用,而int变量不需要 3. Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值 4. 在类进行初始化时,Integer的默认值是null,int的默认...

十豆三展的博客 554

ArrayList扩容原理,源码追踪(jdk8)

不会直接取去初始化容量。如果自己初始化容量的话,那么就会调用有参构造方法,按照我们传递的大小去初始化容量,而不是一开始一个空的列表。然后进入到这个方法,这个方法字面意思理解就是确认容量的操作,首先第一句判断肯定是符合的,因为我们调用无参的构造方法的时候就是这句话初始化的。说明一下这个huge,其实一般是不会走到这里的,我使者循环1了添加这么多元素,实在太卡了,所以如果添加这么多元素性能会大大降低。会回到原来的断点的位置一次,然后我们再次进去的时候就来到这里,可以看到这个方法是一直返回true的。

jgdabc的博客 1457

踩坑系列——自动装箱/拆箱机制

例子: public class Main { public static void main(String[] args) { Integer a = 1; Integer b = 2; Integer c = 3; Integer d = 3; Integer e = 321; Integer f = 321; Long g = 3L; //true,3在Integ

ansijk的博客 211

类与对象动手动脑

1.运行以下代码,你发现了什么? public class Test{ public static void main(String[] args) { // TODO Auto-generated method stub Foo obj1=new Foo(); Foo obj2=new Foo(); System.out.println(obj1==obj2); }...

alone2015的博客 161
上一篇: 【详细】二叉树的基本操作
下一篇: Linux学习笔记
Young-_-D
博客等级 码龄8年 62粉丝 106原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值