Java中的==、equals及hashCode
JAVA equals hashCode
2023-09-11 14:16:11 时间
java中的== 和equals连个比较运算符是比较容易混淆的.
我们现在分别来谈谈什么是 == 什么是equals
==
Java中的==可以用于基本类型及引用类型;
当用于基本数据类型的时候,其意义在于""==""脸变得值是否相等.
class Riven{ public static void main(String[] args) { int A = 10;//基本类型 int B = 10;//基本类型 int C = 10;//基本类型 int D = 10;//基本类型 * 此时符号==代表的A 的值 和 B 的值是否相等 boolean flag = (A == B); * 此时符号==代表的C 的值 和 D 的值是否相等 boolean flag2 = (C == D); System.out.println(flag); System.out.println("=============我是分隔符============="); System.out.println(flag2); }
输出:
true
=============我是分隔符=============
true
当==符号用于引用类型的时候,其意义在于 比较双方对象是否相同
当然,对于String a = ""啊""和Inreger i = 1对象的创建方式,==比较的方式你也可以姑且看作是值得比较.
本质:
在Java中,""==""比较变量是,比较的就是系统"栈"中的内容,也就是栈中的值
基本数据类型在栈中的值就是其内容,而对象类型在栈中存储的是一个引用地址,这个地址就是对象在堆中的位置.对于"=="需要记住的就是以上内容
equals:
首先你需要名曲的就是基本数据类新没有equals方法,
第二,你需要明白的是,所有的类都有equals方法,因为一个类如果没有定义equals方法,它将默认继承Object中的equals方法,返回值与==方法相同.
本质:
java.lang包中的Object类有public boolean equals(Object obj)方法,它比较两个对象是否相等
boolean equals(Object o){
return this==o;
}
所以,如果你没有覆盖该方法,那么class A == class B 与 class A.equals(class B)的意义是一样的的;(注意:String和基本包装类型已经覆盖了该方法)
下面是代码的参考:
class Ahir{ String name; public Ahir(String name) { System.out.println("实例化一个"+name); this.name = name; class Akali{ String name; public Akali(String name) { System.out.println("实例化一个"+name); this.name = name; class Amumu{ public static void main(String[] args) { * 虽然实例化对象的时候使用的名字都是一个,但是new 出来的对象都是凡在堆中的,在没有覆盖equals的 * 情况下 使用的是其超类(Object)的equals方法 其源代码如下: * public boolean equals(Object obj) { * return (this == obj); * 所以说,在没有覆盖超类equals方法的情况下使用equals方法其本质和"=="没有区别,因为其底层实现还是使用的"==" Ahir ahir = new Ahir("阿狸"); Ahir ahir1 = new Ahir("阿狸"); Akali akali = new Akali("阿卡丽"); Akali akali2 = new Akali("阿卡丽"); boolean equals = ahir.equals(akali); System.out.println(equals); //false boolean equals1 = ahir.equals(ahir1); System.out.println(equals1); //false }
其详细情况可以参考:
相关文章
- Java入门系列之hashCode和equals
- 在java中使用JMH(Java Microbenchmark Harness)做性能测试
- java基础——“”equals“”与 “”==“” 的区别
- Java if判断对象为null时,null放在比较运算符的左边还是右边?哪种才是java标准?进来看看你就知道了
- Java自学指南四、书籍
- Java当中的IO流(上)
- Java之所有对象的公用方法>9.Always override hashCode when you override equals
- KOOM原理讲解(上)-JAVA内存分析
- Java学习-050-AES256 之 java.security.InvalidKeyException: Illegal key size or default parameters 解决方法
- Java学习-034-JavaWeb_003 -- JSP page 指令
- Java 计算两个 LocalDateTime 类型的变量之间差的小时数,保留4位小数
- 二、Java基础语法
- Java HashSet和LinkedHashSet的用法
- 面试突击(六)——JVM如何实现JAVA代码一次编写到处运行的?
- Java基础篇:equals()方法与==的区别
- Error:(1, 1) java: 非法字符: ‘ufeff’
- JAVA学习.java.sql.date 与java.util.date以及gettime()方法的分析
- Java空指针异常解决java.lang.NullPointerException解决心得
- Java中“==”与equals()
- java中获取系统属性以及环境变量
- java.lang.OutOfMemoryError: Java heap space错误及处理办法(收集整理、转)