java equals和==区别

本文讲述了Java中equals()和==的区别,包括它们在比较基本类型和引用类型时的不同行为,equals()作为Object类的方法,可以被子类重写以实现内容比较,而==主要关注对象引用。
摘要由CSDN通过智能技术生成

equals和==简介

==既可以比较基本类型也可以比较引用类型 ,对于基本类型就是比较值,对于引用类型比较的就是内存地址,
equals是属于java.lang.Ojbect类里的方法,如果该方法没有被重写过,默认也是==。

总结

基本类型

当用于基本数据类型(如int、char、boolean等)时,==是比较它们的值是否相等。例如:

int a = 5;
int b = 5;
System.out.println(a == b); // 输出:true

引用类型

  • 当用于引用类型的变量时,==比较的是对象的引用地址是否相同,即两个引用是否指向堆内存中的同一个对象实例。
String s1 = new String("Hello");
String s2 = new String("Hello");
System.out.println(s1 == s2); // 输出:false,因为它们是两个不同的对象实例

equals

  • equals()是Object类中的一个方法,所有Java类都继承了它。默认实现也是基于引用的比较,与==作用相似。
Object o1 = new Object();
Object o2 = new Object();
System.out.println(o1.equals(o2)); // 输出:false,因为它们是不同对象实例
  • 许多类(如String、Integer等)重写了equals()方法,使其按照对象的内容或值进行比较。
String str1 = new String("Hello");
String str2 = new String("Hello");
System.out.println(str1.equals(str2)); // 输出:true,因为虽然它们是不同的对象,但内容相同

总结来说,在处理引用类型时,==检查的是对象引用的同一性(是否指向内存中的同一个对象),而equals()在某些类中(尤其是覆盖了该方法的类)则是检查对象的内容或属性是否相等。因此,在使用引用类型时,如果要根据对象的内容来判断相等性,应该优先考虑使用equals()方法,并确保理解所操作类中equals()的具体实现方式。

基本类型

功能不同

==是判断两个变量或实例是不是指向同一个内存空间。
"equals"是判断两个变量或实例所指向的内存空间的值是不是相同。

定义不同

"equals"在JAVA中是一个方法。
"=="在JAVA中只是一个运算符合。

运行速度不同

"“比"equals"运行速度快,因为”"只是比较引用。
“equals"比”=="运行速度要慢。

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值