Integer和int的比较大小

背景导读

(1)== 和 equals 区别


使用 == 进行比较时

Integer和int比较大小

包装类Integer和基本数据类型int比较时,java会自动拆箱为int然后进行比较,实际上就变为两个int变量的比较,本质为值比较

int a = 128;
Integer b = 128;
Integer c = new Integer(128);

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

Integer和Integer比较大小

case1:数值命中缓存

Integer缓存范围是[-128 ~ 127]

Integer d1 = 100;
Integer d2 = 100;
System.out.println(d1 == d2); // true

Integer d3 = 127;
Integer d4 = 127;
System.out.println(d3 == d4); // true

Integer d5 = -128;
Integer d6 = -128;
System.out.println(d5 == d6); // true

case2:数值在缓存之外

超出缓存范围,都会在堆中new出一个对象来存储

Integer d7 = 128;
Integer d8 = 128;
System.out.println(d7 == d8); // false

Integer d9 = -129;
Integer d10 = -129;
System.out.println(d9 == d10); // false

case3:数值和对象

变量b是java常量池中存储的引用(指向堆中的对象)
变量c指向堆中新建的对象
两者在内存中的地址不同

Integer b = 128;
Integer c = new Integer(128);
System.out.println(c == b); // false

Integer b = 127;
Integer c = new Integer(127);
System.out.println(c == b); // false

case3:对象和对象

new生成的Integer变量永远是不相等的(因为new生成的是两个对象,其内存地址不同)

Integer c = new Integer(128);
Integer c1 = new Integer(128);
System.out.println(c1 == c); // false

Integer e = new Integer(127);
Integer f = new Integer(127);
System.out.println(e == f); // false

使用equals进行比较时

case1:数值命中缓存

Integer缓存范围是[-128 ~ 127]

Integer e = 127;
Integer f = 127;
System.out.println(e.equals(f)); // true

case2:数值在缓存之外

Integer e = 128;
Integer f = 128;
System.out.println(e.equals(f)); // true

case3:数值和对象

Integer e = new Integer(128);
Integer f = 128;
System.out.println(e.equals(f)); // true

case3:对象和对象

Integer e = new Integer(128);
Integer f = new Integer(128);
System.out.println(e.equals(f)); // true

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/847.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【K8S系列】从零开始学习 k8s:入门指南(二)

目录 序言 前情提要: 4.K8S架构 4.1 声明式系统VS命令式系统 4.2 k8s-声明式系统 4.2.1 声明方式-yaml 4.3 Kubernetes的基本概念 1.集群 2.节点 3.容器 4.Pod 5.Service 6.Deployment 问题: 4.4 K8S核心组件 4.4.1 kube-apiserver 4.4…

【Linux学习】进程间通信——system V(共享内存 | 消息队列 | 信号量)

🐱作者:一只大喵咪1201 🐱专栏:《Linux学习》 🔥格言:你只管努力,剩下的交给时间! 进程间通信——共享内存 | 消息队列 | 信号量🏀共享内存⚽系统调用shmgetkey值⚽系统…

提升Python代码性能的六个技巧

文章目录前言为什么要写本文?1、代码性能检测1.1、使用 timeit 库1.2、使用 memory_profiler 库1.3、使用 line_profiler 库2、使用内置函数和库3、使用内插字符串 f-string4、使用列表推导式5、使用 lru_cache 装饰器缓存数据6、针对循环结构的优化7、选择合适算法…

【WEB前端进阶之路】 HTML 全路线学习知识点梳理(下)

前言 本文是HTML零基础小白学习系列的第三篇文章,点此阅读 上一篇文章 文章目录前言十五.HTML布局1.使用div元素添加网页布局2.使用table元素添加网页布局十六.HTML表单和输入1.文本域2.密码字段3.单选按钮4.复选框5.提交按钮十七.HTML框架1.iframe语法2.iframe设置…

Windows电脑密码忘记解决方法

目录 背景 方法一 方法二 方法三 方法四 方法五 背景 个人电脑忘记了密码,无法登录用户界面。 方法一 1. 开机时常按 F11,如果是Win10一下系统,就常按 F8,知道出现一下图状 2. 选择疑难解答,再选择高级选项 3.…

Tomcat前端页面部署

一,Tomcat的安装1.Tomcat是什么Tomcat是一个HTTP服务器,HTTP协议是HTTP客户端和HTTP服务器之间交换数据的格式,我们可以通过ajax和Java Socket分别构造HTTP客户端,同时HTTP服务器也可以通过Java Socket来实现,而Tomcat…

React项目规范:目录结构、根目录别名、CSS重置、路由、redux、二次封装axios

React项目(一)一、创建项目二、目录结构三、craco配置别名并安装less1.craco安装2.配置别名3.安装less四、CSS样式重置五、配置路由六、配置Redux1.创建大仓库2.创建小仓库(1)方式1:RTK(2)方式2…

toString()、equals()是什么,为啥需要重写,多种方法来重写

https://m.runoob.com/java/java-object-class.html toString() 1.为什么会有toString 子类继承父类就可以使用父类所有非私有的属性的方法。 在Java中所有类都直接或者间接继承Object类,可以说只要是Object类里面定义的非私有的属性和方法,任何类都可…

Linux上如何使用Stable Diffusion WebUI

在我把所有的坑都踩了一遍之后,决定记录一下linux上的Stable Diffusion webui是怎么搞的。 前提条件 已安装CUDA 已安装git 已安装Anaconda 直接安装Anaconda不要指望Linux自带的Python。虽然Linux自带的Python,但是缺胳膊少腿,所以还是直接…

IntelliJ IDEA创建Servlet

目录 ——————————————————————————————— 一、创建Java项目 1、创建java项目 2、选择java 3、next 4、给项目命名 5、新创建完java项目的目录结构 二、变java为servlet项目 1、变servlet项目 2、选择Web Application 3、更新完成后的目录…

尚融宝04-mybatis-plus插件和条件构造器

目录 一、分页插件 1、添加配置类 2、添加分页插件 3、测试分页 二、XML自定义分页 1、UserMapper中定义接口方法 2、定义XML 3、测试 三、乐观锁 1、场景 2、乐观锁方案 3、乐观锁实现流程 4、优化流程 四、wapper介绍 1、Wrapper家族 2、创建测试类 五、Qu…

Linux驱动开发

一、驱动分类Linux中包含三大类驱动:字符设备驱动、块设备驱动和网络设备驱动。其中字符设备驱动是最大的一类驱动,因为字符设备最多,从led到I2C、SPI、音频等都属于字符设备驱动。块设备驱动和网络设备驱动都要比字符设备驱动复杂。因为其比…

线程的状态

目录 1.线程状态的种类 2.线程的状态图 3.状态的详细说明 1.线程状态的种类 初始(NEW):新建一个线程,但还没有调用start方法 运行(RUNNABLE):Java线程中将就绪(ready)和运行中(running)两种状态统称为"运行".线程对象创建后,其他线程调用了该对象的start()方法.该…

抽丝剥茧还原真相,记一次神奇的崩溃

作者:靳倡荣 本文详细回放了一个崩溃案例的分析过程。回顾了C多态和类内存布局、pc指针与芯片异常处理、内存屏障的相关知识。 一、不讲“武德”的崩溃 1.1 查看崩溃调用栈 客户反馈了一个崩溃问题,并提供了core dump文件,查看崩溃调用栈如下…

大数据-重新学习hadoop篇(第一天)-未完成

前言:首先这次重新学习为了后面校招,我会把我每天复习学到的一些觉得重要的知识点进行总结下来,持续更新,为实习做准备,加深记忆,从今天开始可能就不会法leetcode的相关题解了,但是每天还是会做…

【动态规划】不同路径,编辑距离题解及代码实现

Halo,这里是Ppeua。平时主要更新C语言,C,数据结构算法......感兴趣就关注我吧!你定不会失望。 🌈个人主页:主页链接 🌈算法专栏:专栏链接 我会一直往里填充内容哒! &…

【前端】深入浅出缓存原理

缓存的基本原理 对于前端来说,缓存主要分为浏览器缓存(比如 localStorage、sessionStorage、cookie等等)以及http缓存,也是本文主要讲述的。 当然叫法也不一样,比如客户端缓存大概包括浏览器缓存和http缓存 所谓htt…

“选用育留”,让AI搞定人力资源那点事

人工智能可以渗透应用到各行各业,在人力资源领域,技术已经重构了我们对人力资源的想象力,许多企业都在应用AI技术改善人力工作,人力资源的数智化不仅仅是将一部分日常事务性的工作交由AI处理,节约工作时间,…

到底什么是线程?线程与进程有哪些区别?

上一篇文章我们讲述了什么是进程,进程的基本调度 http://t.csdn.cn/ybiwThttp://t.csdn.cn/ybiwT 那么本篇文章我们将了解一下什么是线程?线程与进程有哪些区别?线程应该怎么去编程? 目录 http://t.csdn.cn/ybiwThttp://t.csdn…

HTTP详解

一,什么是HTTPHTTP(全称为“超文本传输协议”),是一种应用非常广泛的应用层协议,之前在《初识网络原理》的博客(初识网络原理_徐憨憨!的博客-CSDN博客)中,有详细讲解过TCP/IP五层模型,其中应用层描述了数据…
最新文章