废话不多说看代码:

Integer a = 100;
Integer b = 100;
a == b            表达式结果为true
a.equals(b)     表达式结果为trueInteger a = 1000;
Integer b = 1000;
a == b            表达式结果为false
a.equals(b)     表达式结果为true

为什么?

包装类型不应该使用“==”运算符比较其值是否相等,因为它比较的是地址。比较引用类型的变量所指向的值是否相等请使用equals方法。

既然比较的是地址,那么为什么上半部分成立而下半部分不成立?

在上半部分中,a和b是同一地址。因为自动装箱规范要求boolean、byte、char <= 127、介于-127到128之间的short和int被包装到固定的对象中,也就是说:上半部分的a和b都被包装在了一个对象中,所以它们的地址相同

所以在下半部分,a和b的值都大于上述规定,被包装在了不同的对象中,所以表达式“a == b”比较它们的地址其表达式结果为false。

请记住:比较引用类型的变量所指向的值是否相等使用equals方法。
还要记住:自动装箱规范要求boolean、byte、char <= 127、介于-127到128之间的short和int被包装到固定的对象中。

参考了《Java核心技术 第11版 卷一》

Java包装类型对象比较相等性注意事项相关推荐

  1. 一分钟理解Java包装类型

    转载自  一分钟理解Java包装类型 Java 一直标榜自己是一个纯粹的面向对象语言,自作聪明的为所有的值类型都提供相应的引用类型(不明白这两个概念,看之前的<一分钟理解传值和传引用>)比 ...

  2. Java 包装类型的缓存机制

    Java包装类型的缓存机制 Integer 缓存机制 背景 Integer 最常见的面试题,就是问Integer的值如何比较相等.比如: Integer i1 = 33; Integer i2 = 3 ...

  3. JS中数据类型、内置对象、包装类型对象、typeof关系

    平时在复习JS基础知识时,经常会遇到JS数据类型.基础数据类型.内置对象.包装类型对象,检测数据类型时,用到的typeof值,感觉都差不多,但是又有差异.今天特地整理下,方便理解. JS数据类型 基础 ...

  4. java 包装类型_2.Java基本类型与包装类型

    java中的基本类型包含以下几个: byte.short.int.long.float.double.char.boolean 整型 其中byte.short.int.long都是表示整数的,只不过他 ...

  5. java包装类型作用,和基本类型区别

    Java中的8种基本数据类型都有对应的对象类型,但是既然有了基本数据类型,包装类型有什么作用呢?它们有什么区别呢? 答案是包装类型的出现是为了方便对基本类型进行操作.包装类型可以解决一些基本类型解决不 ...

  6. JAVA包装类型缓存池详解

    前言:我们知道,缓存一些常用的数据能提高程序的运行效率,而在Java中,Java给一些基本类型提供了一个缓存池,缓存池中已经提前存进去了一些元素,提高数据的读取速度.在此之前,先了解一下Java的自动 ...

  7. java包装类型 “==”的比较(如Integer,Double)

    大家在平常写代码时对于简单类型int,double等变量的值进行比较的时候一般会用"== "来比较两个值是否相等,对于简单类型来说这个比较没什么问题,但是如果是包装类型,比如说In ...

  8. java integer比较大小_Integer 类型对象之间大小比较

    一.Integer 类型对象之间大小比较 1. 使用 new Integer() 创建的对象 : 首先,我们知道,在java中,基本类型之间是可以做大小比较的,例如int i=1,int j=2,是可 ...

  9. java包装类有几种_Java包装类型有几种

    Java包装类型有8种,分别是:1.Byte:2.Integer:3.Short:4.Long:5.Float:6.Double:7.Boolean:8.Character. [相关学习推荐:java ...

最新文章

  1. T75 大数加法+取模
  2. php无表单上传文件,php – 如何使用没有实体类的表单上传文件
  3. Java程序员从笨鸟到菜鸟之(一)开发环境搭建,基本语法,字符串,数组
  4. 直播预告:基于动态词表的对话生成研究 | PaperWeekly x 微软亚洲研究院
  5. 启动SecureCRT出现ImportError: No module named _sysconfigdata_nd
  6. Python把列表中的数字尽量等分成n份
  7. 个人优盘更新涉密计算机病毒库,在涉密计算机和非涉密计算机之间交叉使用优盘、移动硬盘等移动存储介质时,只要及时升级杀毒软件病毒库,就不会造成泄密 - 作业在线问答...
  8. dalvik虚拟内存管理之二——垃圾收集
  9. centos7只安装mysql客户端
  10. 解析数论导论中的符号
  11. C# - 此应用无法在你的电脑上运行
  12. 按键精灵的5级开发认证,笔试题参考
  13. XXL分布式任务调度平台
  14. 戳这里,誉天胡老师教你如何备考 HCIE-Datacom!考试通关so easy!
  15. 可扩展的交互式可视化框架,用于衡量新闻中的性别偏见
  16. yapi文档转换jmx脚本
  17. Arduino RGB颜色渐变代码(附上C语言版本)
  18. 什么是前端渲染和后端渲染和SPA页面
  19. vue根据不同权限显示图片_vuex根据不同的用户权限展示不同的路由列表
  20. 围圈报数c语言编程,C语言编程:有n个人围成一圈,顺序排号。从第一个人开始报数......

热门文章

  1. mysql写入 cpu飙升_分析MySQL中索引引引发的CPU负载飙升的问题
  2. vgh电压高了有什么_一文告诉你电压互感器的作用是什么?
  3. java 二阶段提交,二阶段提交协议(Two Phase Commitment Protocol)
  4. Web前端笔记-2D图形平面内平移定位(two.js)
  5. Python笔记-flask执行后台程序(非web应用)
  6. Spring Boot中登录错误消息的显示
  7. Linux学习笔记-消息队列的打开、创建、控制
  8. C++工作笔记-模版中class更新为typename
  9. 数据结构-线性相关代码
  10. linux如何脚本监控tps,通过shell脚本监控日志切换频率