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

两个包装类型变量的比较问题

问题:

由于受包装类的自动装箱和拆箱的影响,一直以为直接用==直接比较两个包装类的大小是否相等就可以,惭愧。比如:

Integer a=11;
Integer b=11;
System.out.println(a==b);

运行结果是 true,似乎没啥问题,但是改一下变量的值就不行了,比如:

Integer a=199;
Integer b=199;
System.out.println(a==b);

结果就是false了。

为什么:

我们都知道==本质上比较的是对象的地址是否相等,包装类的变量也是对象,a和b是两个不同的对象,那么==来比较的话肯定是不相等的,而第一个例子之所以是true,是因为java对常用数字的特殊优化处理,使得Integer类型的引用在-127~127这个范围内都指向一个对象,在这个数据范围之外的就是不同的两个对象

总结:

记住一点,对象比较就用equals,基础数据类型就用==来比较,就不会出错。

http://www.lryc.cn/news/326292.html

相关文章:

  • Qt/C++通用跨平台Onvif工具/支持海康大华宇视华为天地伟业等/云台控制/预置位管理/工程调试利器
  • js 在for循环中有setTimeout 时,不执行等待,解决方法
  • 机械硬盘与固态硬盘的区别
  • Springboot总结
  • P8623 [蓝桥杯 2015 省 B] 移动距离 Python
  • 【Python】学习率调整策略详解和示例
  • 【Linux实践室】Linux用户管理实战指南:用户密码管理操作详解
  • UE5学习日记——蓝图节点前缀关键字整理
  • 浅析机器学习的常用方法
  • 大数据开发(日志离线分析项目)
  • PostgreSQL技术大讲堂 - 第48讲:PG高可用实现keepalived
  • 【若依 SpringBoot 前后端分离版】修改加密传输后密码错误的解决方法(附排错过程)
  • 发送请求- header配置
  • C语言重难知识点
  • jMeter学习
  • Nodejs运行vue项目时,报错:Error: error:0308010C:digital envelope routines::unsupported
  • 华为汽车图谱
  • 鸿蒙操作系统-初识
  • 【ZZULIOJ】1003: 两个整数的四则运算(Java)
  • 聊聊芯片原厂
  • 百人一岗,Android开发者的困境。。。。。
  • 若依分离版 —引入echart连接Springboot后端
  • Halcon深度学习项目实战
  • 子类中的方法去调用父类中的方法有几种形式?原生django如何向响应头写入数据
  • 数据安全治理框架构建
  • 深度学习十大算法之图神经网络(GNN)
  • 【工具类】git log 常用别名,git log 干活,git log常用参数
  • [linux] AttributeError: module ‘transformer_engine‘ has no attribute ‘pytorch‘
  • 前端面试题---->JavaScript
  • spring 的理解