Integer使用==做判断遇到的问题
问题:
最近使用Integer类型的数据做判断时,遇到了一个神奇的问题。
如:
Integer a=223;
Integer b=223;
这样使用==做判断,得到的结果是 false
原因:
后来查找了一下,发现Integer类型的数据,范围在-128-127时是放在常量池的,意思也就是如果在范围内,会直接从常量池中取值,这时使用==判断是没问题的,但是如果不在常量池范围内使用Integer是就会重新new Integer(),所以这个时候使用==得到的结果就是false了。

debug看一下各个变量的内存地址:

控制台输出结果:

这里顺便说一下==和equals的区别
说简单点就是: ==比较的是内存地址,而equals比较的是值是否相等。
上面的测试案例把==换成equals:

控制台输出:

Integer使用==做判断遇到的问题的更多相关文章
- 源码解析之 Mybatis 对 Integer 参数做了什么手脚?
title: 源码解析之 Mybatis 对 Integer 参数做了什么手脚? date: 2021-03-11 updated: 2021-03-11 categories: Mybatis 源码 ...
- JS读取UserAgent信息并做判断
JS读取UserAgent信息并做判断 userAgent信息可以由navigator.userAgent拿到.例子: <script type="text/javascript&qu ...
- [原]JSON 字符串(值)做判断,比较 “string ”
现在我这样一个json字符串: char* cjson = "{\"code\": \"200\", \"code2\": 200 ...
- JS流程控制语句 做判断(if语句)if语句是基于条件成立才执行相应代码时使用的语句。语法:if(条件) { 条件成立时执行代码}
做判断(if语句) if语句是基于条件成立才执行相应代码时使用的语句. 语法: if(条件) { 条件成立时执行代码} 注意:if小写,大写字母(IF)会出错! 假设你应聘web前端技术开发岗位,如果 ...
- linux shell 之if-------用if做判断
综合网络,略有修改, 一 简介 1 字符串判断 str1 = str2 当两个串有相同内容.长度时为真 str1 != str2 当串str1和str2不等时为真 -n str1 当串的长度大于0 ...
- java那些小事---用偶数做判断,不要用基数做判断
今天做项目遇到这样一个奇葩问题:我们先看如下代码: int ftcs = dealFtcs(ftcs); if(ftcs % 2 == 1){ //奇数 /* * 处理..... */ } ...
- Integer 类型数值判断相等的坑
题目: public static void main(String[] args) { Integer a = 100, b = 100; Integer c = 150, d = 150; Sys ...
- 多线程操作中为什么使用while而不是if来做判断状态是否就绪
在多线程操作中,我们常常会遇到需要先判断信号量状态是否就绪,然后执行后续操作的场景.这里对状态的判断使用的是while而不是单线程下常用的if. 以下示例展示了一个简单的生产者-消费者模型:当队列满的 ...
- js获取当前域名及获取页面完整地址并做判断
<script language="javascript"> //获取域名 hostName = window.location.host; host2=documen ...
随机推荐
- Python3基础之初识Python
Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序, 作为ABC语 ...
- Nginx搭建过程
https://www.cnblogs.com/gscq073240/articles/6773000.html
- postman发送请求的简单操作
发送请求常用的是post和get 两者的区别是: 1.post比get安全,因为参数直接暴露在url中,不能用来传递敏感信息 2.get参数通过url传递,post放在request body中 3. ...
- Java之路——初识Eclipse
零.大纲 一.前言 二.获取Eclipse 三.运行Eclipse 四.创建及运行第一个Java Project 五.界面介绍 六.如何调试 七.获取插件 八.Eclipse 快捷键 九.总结 一.前 ...
- supervisor守护filebeat服务进程
1.变更原因 部署安装supervisor进行filebeat守护及后面的各种服务进程守护可以用2.变更内容增加supervisor服务 3.变量时间:6月2号-6月3号4.变更风险评估:无风险4.1 ...
- STM32系列之初探(二)
问题一: 什么是STM32 新的基于ARM内核的32位MCU系列 内核为ARM公司为要求高性能,低成本,低功耗的嵌入式应用专门设计的Crotex-M内核 标准的ARM体系 特点: 高性能 低电压 低功 ...
- Android触摸事件传递机制,这一篇就够了
整个触摸事件牵涉到的是,Activity,View,ViewGroup三者的传递机制. 这个触摸事件就是从外层往内层一层层的传递. 整个传递机制,分为3个步骤:分发,拦截,和消费. 1. 触摸事件的类 ...
- <img>和background-img区别
1. 是否占位 background-image是背景图片,是css的一个样式,不占位 <img />是一个块状元素,它是一个图片,是html的一个标签,占位 2.否可操作 backgro ...
- python学习记录(九)
0911--https://www.cnblogs.com/fnng/archive/2013/05/08/3066054.html 魔法方法.属性 准备工作 为了确保是新型类,应该把_metacla ...
- Bayesian Non-Exhaustive Classification A case study:online name disambiguation using temporal record streams
一 摘要: name entity disambiguation:将对应多个人的记录进行分组,使得每个组的记录对应一个人. 现有的方法多为批处理方式,需要将所有的记录输入给算法. 现实环境需要1:以o ...