Java 中的 ==, equals 与 hashCode 的区别与联系
1、概念 == : 该操作符生成的是一个boolean结果,它计算的是 操作数的值之间的关系 equals : Object 的 实例方法 ,比较两个对象的 content 是否相同 hashCode : Object 的 native方法 , 获取对象的 哈希值 ,用于确定该对象在哈希表中的索引位置,它实际上是一个int型整数 1、操作数的值 基本数据类型变量 在Java中有八种基本数据类型: 浮点型:float(4 byte), double(8 byte) 整型:byte(1 byte), short(2 byte), int(4 byte) , long(8 byte) 字符型: char(2 byte) 布尔型: boolean(JVM规范没有明确规定其所占的空间大小,仅规定其只能够取字面值”true”和”false”) 对于这八种基本数据类型的变量,变量直接存储的是“值”。因此,在使用关系操作符 == 来进行比较时,比较的就是“值”本身。 要注意的是, 浮点型和整型都是有符号类型的(最高位仅用于表示正负,不参与计算【以 byte 为例,其范围为 -2^7 ~ 2^7 - 1,-0即-128】),而char是无符号类型的(所有位均参与计算,所以char类型取值范围为0~2^16-1) 。 引用类型变量 在Java中, 引用类型的变量存储的并不是“值