美文网首页
包装类型对象的值比较,为什么不能使用==

包装类型对象的值比较,为什么不能使用==

作者: 温暖的纯真 | 来源:发表于2020-03-15 17:51 被阅读0次

使用==和!=来比较对象,是比较栈上两个对象是不是指向堆上的同一个对象,即引用地址是否相等。

对于基本类型的常量池,JVM会自动维护,自动装箱过程中取常量池中的值。但基本类型数值有其大小范围,如:


image.png

超过这个范围,会new()新的对象,生成新的内存地址,使用==比较的内存地址就是不相等的,因为hashcode()的默认行为就是对堆上的对象产生独特值,没有重写hashcode(),两个对象不会相等==(即使两个对象的数据相同)。

而equals()是执行对象值的比较。所以,相同类型的包装类对象之间值的比较,使用equals()方法。对于String 类,已经重写了hashCode()和equals()方法,所以==执行的是对象相等性的比较而不是引用。

相关文章

  • 包装类型对象的值比较,为什么不能使用==

    使用==和!=来比较对象,是比较栈上两个对象是不是指向堆上的同一个对象,即引用地址是否相等。 对于基本类型的常量池...

  • 阿里规约

    1. 【强制】所有的相同类型的包装类对象之间值的比较,全部使用 equals 方法比较。 说明:对于 Intege...

  • 《阿里巴巴Java开发手册》阅读手记

    一、(四)、7【强制】所有的相同类型的包装类对象之间值的比较,全部使用equals方法比较。 说明:对于Integ...

  • Integer 源码探寻

    Integer 的包装类,所以是引用类型,比较的是对象的地址值,所以走else; 但是24为什么就==成立了呢, ...

  • JavaScript基础 面向对象

    包装对象 原始类型(字面量\值类型)boolean number str字面量创建过程 只有原始类型才有包装对象...

  • 关于js的引用类型(第五篇)

    1.使用对象 2.创建并操作数组 3.理解基础的js类型 4.使用基本类型和基本包装类型 引用类型的值(对象)就是...

  • 第六章 面向对象(下)

    包装类 通过包装类将八种基本类型的值包装成对象使用 自动装箱:把基本类型变量赋给对应包装类变量 自动拆箱:把包装类...

  • JAVA中的对象

    java8增强的包装类 java中基本数据类型不能当作对象类型变量使用的问题, java提供了包装类 (Wrapp...

  • 包装对象

    当我们的值类型需要操作属性的时候,就要借助包装对象 对象.属性只有对象才能设置,值类型设置属性的时候,每次都会创建...

  • 第5章:引用类型

    导读: 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型和基本包装类型 引用类型、对象、...

网友评论

      本文标题:包装类型对象的值比较,为什么不能使用==

      本文链接:https://www.haomeiwen.com/subject/qoteehtx.html