equal函数的用法,equals函数用法

  equal函数的用法,equals函数用法

  首先,让我们来看看它们的区别:

  (推荐学习:java入门)

  equals()方法用于比较两个对象的内容是否相等。因为所有类都是从java.lang.Object类继承的,所以它适用于所有对象。如果没有覆盖这个方法,仍然调用object类中的方法,而object中的equals方法返回==的判断;

  ==比较变量(栈)内存中存储的对象的(堆)内存地址,用于判断两个对象的地址是否相同,即是否引用同一个对象。

  equals()作用

  equals()的作用是判断两个对象是否相等。

  Equals()是在JDK的Object.java中定义的。通过判断两个对象的地址是否相等(即是否是同一个对象)来区分两个对象是否相等。源代码如下:

  公共布尔等于(对象对象){

  return(this==obj);

  }由于equals()方法是在Object.java定义的,所以意味着所有的Java类都实现了equals()方法,所有的类都可以通过equals()比较两个对象是否相等。

  但是,我们已经说过,使用默认的“equals()”方法等同于“==”方法。所以我们通常会重写equals()方法:如果两个对象的内容相等,equals()方法返回true;否则,返回fasle。

  根据“类是否覆盖equals()方法”分为2类。

  如果一个类没有重写equals()方法,那么当它通过equals()比较两个对象时,实际上是比较这两个对象是否是同一个对象。此时相当于用“==”来比较两个对象。

  我们可以重写该类的equals()方法,让equals()以其他方式比较两个对象是否相等。通常的做法是:如果两个对象的内容相等,equals()方法返回true;否则,返回fasle。

  下面,将举例说明上述两种情况:

  1.equals()方法并未涵盖在内。

  公共类EqualsTest {

  公共静态void main(String[] args) {

  //创建两个内容相同的新Person对象,

  //再次将它们与equals进行比较。

  用户user1=新用户( James ,100);

  用户user2=新用户( James ,100);

  System.out.printf(比较结果: user 1 . equals(user 2));

  }

  /**

  * @desc用户类。

  */

  静态类用户{

  int age

  字符串名称;

  公共用户(字符串名称,整数){

  this.name=name

  this.age=年龄;

  }

  公共字符串toString() {

  返回姓名-年龄;

  }

  }

  }运行结果:

  错误结果分析:

  我们用user1.equals(user2)来“比较user1和user2是否相等”。实际上调用了Object.java的equals()方法,也就是调用了(user1==user2)。

  就是比较p1和p2是不是同一个对象。根据用户1和用户2的定义,虽然内容相同;但它们是两个不同的对象,所以返回的结果是假的。

  (视频教程推荐:java视频教程)

  2.重写equals()方法。

  修改上面的EqualsTest以覆盖equals()方法:

  公共类EqualsTest {

  公共静态void main(String[] args) {

  //创建两个内容相同的新Person对象,

  //再次将它们与equals进行比较。

  用户user1=新用户( James ,100);

  用户user2=新用户( James ,100);

  System.out.printf(比较结果: user 1 . equals(user 2));

  }

  /**

  * @desc用户类。

  */

  静态类用户{

  int age

  字符串名称;

  公共用户(字符串名称,整数){

  this.name=name

  this.age=年龄;

  }

  公共字符串toString() {

  返回姓名-年龄;

  }

  @覆盖

  公共布尔等于(对象对象){

  如果(this==obj)

  返回true

  if (obj==null)

  返回false

  if (getClass()!=obj.getClass())

  返回false

  User other=(User)obj;

  如果(年龄!=other.age)

  返回false

  if (name==null) {

  if (other.name!=空)

  返回false

  } else if(!name.equals(其他. name))

  返回false

  返回true

  }

  }

  }运行结果:

  真分析:我们在EqualsTest.java中重写了User的equals()函数:当两个用户对象的名字和年龄相等时,返回真。因此,运行结果返回true。

  == 的作用

  "==":它的作用是判断两个对象的地址是否相等。也就是说,判断引用的对象是否是堆中的同一个对象,我们就知道所有的新对象都在堆中。对象的引用存储在堆栈中,特别是堆栈框架中。让我们看看下面的代码:

  公共静态void main(String[] args) {

  用户user1=新用户( James ,100);

  用户user2=新用户( James ,100);

  system . out . println( user 1 . equals(user 2): user 1 . equals(user 2));

  system . out . println( user 1==user 2:(user 1==user 2));

  }输出结果:

  user1.equals(user2):true

  1==user2: false指向堆中两个不同的区域,因此与==的比较返回false。以上是equals()函数和“==”是什么函数的详细说明,更多请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: