问题:

最近使用Integer类型的数据做判断时,遇到了一个神奇的问题。

如:

Integer a=223;

Integer b=223;

这样使用==做判断,得到的结果是 false

原因:

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

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

控制台输出结果:

这里顺便说一下==和equals的区别

说简单点就是: ==比较的是内存地址,而equals比较的是值是否相等。

上面的测试案例把==换成equals:

控制台输出:

Integer使用==做判断遇到的问题的更多相关文章

  1. 源码解析之 Mybatis 对 Integer 参数做了什么手脚?

    title: 源码解析之 Mybatis 对 Integer 参数做了什么手脚? date: 2021-03-11 updated: 2021-03-11 categories: Mybatis 源码 ...

  2. JS读取UserAgent信息并做判断

    JS读取UserAgent信息并做判断 userAgent信息可以由navigator.userAgent拿到.例子: <script type="text/javascript&qu ...

  3. [原]JSON 字符串(值)做判断,比较 “string ”

    现在我这样一个json字符串: char* cjson = "{\"code\": \"200\", \"code2\": 200 ...

  4. JS流程控制语句 做判断(if语句)if语句是基于条件成立才执行相应代码时使用的语句。语法:if(条件) { 条件成立时执行代码}

    做判断(if语句) if语句是基于条件成立才执行相应代码时使用的语句. 语法: if(条件) { 条件成立时执行代码} 注意:if小写,大写字母(IF)会出错! 假设你应聘web前端技术开发岗位,如果 ...

  5. linux shell 之if-------用if做判断

    综合网络,略有修改, 一 简介 1 字符串判断 str1 = str2 当两个串有相同内容.长度时为真  str1 != str2 当串str1和str2不等时为真  -n str1 当串的长度大于0 ...

  6. java那些小事---用偶数做判断,不要用基数做判断

          今天做项目遇到这样一个奇葩问题:我们先看如下代码: int ftcs = dealFtcs(ftcs); if(ftcs % 2 == 1){ //奇数 /* * 处理..... */ } ...

  7. Integer 类型数值判断相等的坑

    题目: public static void main(String[] args) { Integer a = 100, b = 100; Integer c = 150, d = 150; Sys ...

  8. 多线程操作中为什么使用while而不是if来做判断状态是否就绪

    在多线程操作中,我们常常会遇到需要先判断信号量状态是否就绪,然后执行后续操作的场景.这里对状态的判断使用的是while而不是单线程下常用的if. 以下示例展示了一个简单的生产者-消费者模型:当队列满的 ...

  9. js获取当前域名及获取页面完整地址并做判断

    <script language="javascript"> //获取域名 hostName = window.location.host; host2=documen ...

随机推荐

  1. 使用dlib基于CNN(卷积神经网络)的人脸检测器来检测人脸

    基于机器学习CNN方法来检测人脸比之前介绍的效率要慢很多 需要先下载一个训练好的模型数据: 地址点击下载 // dlib_cnn_facedetect.cpp: 定义控制台应用程序的入口点. // # ...

  2. 笔记常用Linux命令(二) 进程和端口

    查看系统进程 ps:用于报告当前系统的进程状态 a:显示所有终端机下执行的程序 ps -ef/ps aux: 这两个命令都是查看当前系统正在运行进程,两者的区别是展示格式不同. 如果想要查看特定的进程 ...

  3. 本地Linux虚拟机内网穿透,服务器文件下载到本地磁盘

    本地Linux虚拟内网穿透 把服务器文件下载到本地磁盘 https://natapp.cn/ 1.注册账户点击免费隧道  

  4. 实现当前目录下开启CMD

    我们都知道在WIN7下,可以按shift+鼠标右键->在此处打开命令窗口 或者在 输入cmd,回车 那么,怎样去实现这样的功能呢? //当前目录下开启CMD #include <stdio ...

  5. tensorflow feed_dict()

    import tensorflow as tf a=tf.Variable(100) b=tf.Variable(200) c=tf.Variable(300) update1=tf.assign(c ...

  6. 未来图书-需求分析——脑机接口、VR、AI推荐系统

    个人比较喜欢科幻作品,也常常畅想未来.. "书"作为几千年来人类文明信息载体,必然会不断演变.. 文荟宿舍墙上贴着Elon Musk的海报,向往像他一样能够在有限的生命中用极致的想 ...

  7. Features for Multi-Target Multi-Camera Tracking and Re-identification论文解读

    解读一:Features for Multi-Target Multi-Camera Tracking and Re-identification Abstract MTMCT:从多个摄像头采集的视频 ...

  8. 安装MinGW出现 mingw-get: *** ERROR *** Get package:

    个人的解决方法: 1.手机开个热点让电脑连上. 2.在Setting里面讲proxy关闭.

  9. Sklearn--(SVR)Regression学习笔记

    今天介绍一个机器学习包,sklearn.其功能模块有regression\classification\clustering\Dimensionality reduction\data preproc ...

  10. CyclicBarrier与CountDownLatch区别

    阻塞与唤醒方式的区别 CountDownLatch计数方式 CountDownLatch是减计数.调用await()后线程阻塞.调用countDown()方法后计数减一,当计数为零时,调用await( ...