相关文章推荐
刚毅的长颈鹿  ·  Spring 3.1 M2: ...·  2 周前    · 
温暖的海龟  ·  达梦spring-data-jdbc - ...·  1 周前    · 
爱运动的热带鱼  ·  Caused by: ...·  5 天前    · 
温柔的红薯  ·  CAS Authentication :: ...·  5 天前    · 
威武的绿豆  ·  openGauss-v3.0.0系列-04 ...·  1 年前    · 
完美的熊猫  ·  Facebook OAuth ...·  1 年前    · 

一、java中的基本数据类型(int、double、short、long、byte、float、boolean、char)判断是否相等,直接使用"=="就行了,相等返回true,否则,返回false。


二、但是java中的引用类型的对象比较变态,假设有两个引用对象obj1,obj2,
obj1==obj2 判断是obj1,obj2这两个引用变量是否相等,即它们所指向的对象是否为同一个对象。言外之意就是要求两个变量所指内存地址相等的时候,才能返回true,每个对象都有自己的一块内存,因此必须指向同一个对象才返回ture。


三、如果想要自定义两个对象(不是一个对象,即这两个对象分别有自己的一块内存)是否相等的规则,那么必须在对象的类定义中重写equals()方法,如果不重写equals()方法的话,默认的比较方式是比较两个对象是否为同一个对象。


在Java API中,有些类重写了equals()方法,它们的比较规则是:当且仅当该equals方法参数不是 null,两个变量的类型、内容都相同,则比较结果为true。这些类包括:String、Double、Float、Long、Integer、Short、Byte、、Boolean、BigDecimal、BigInteger等等,太多太多了,但是常见的就这些了,具体可以查看API中类的equals()方法,就知道了。

重写equals()方法的步骤一般如下:
1、先用“==”判断是否相等。

2、判断equals()方法的参数是否为null,如果为null,则返回false;因为当前对象不可能为null,如果为null,则不能调用其equals()方法,否则抛java.lang.NullPointerException异常。

3、当参数不为null,则如果两个对象的运行时类(通过getClass()获取)不相等,返回false,否则继续判断。

4、判断类的成员是否对应相等。往下就随意发挥了。

String类中的equals()方法源码:

public boolean equals(Object anObject)
      //如果是同一个对象
       if (this == anObject)
           return true;
       //如果传递进来的参数是String类的实例
       if (anObject instanceof String)
           String anotherString = (String)anObject;
           int n = count;//字符串长度
           if (n == anotherString.count) //如果长度相等就进行比较
               char v1[] = value;//取每一个位置的字符
               char v2[] = anotherString.value;
               int i = offset;
               int j = anotherString.offset;
               while (n-- != 0) //对于每一位置逐一比较
                   if (v1[i++] != v2[j++])
                       return false;
               return true;
       return false;

对于object类的equals()方法,判断调用该方法的对象与要比较的对象是不是同一个对象(判断地址),而String类中的equals()方法,则判断当前字符串与传递进来的字符串的内容是否一致。

object类中的equals()方法:

public boolean equals(Object obj)
  //调用equal的对象的地址和参数对象的地址是否相等
       return (this == obj);

另外,对于java中的其他类,如果没有重写object类中的equals()方法,我们就可以认为调用该类的equals()方法就是判断这两个类是不是同一个类。只要是使用new类名(),这种形式生成的类(除单例外),我们都可以认为是不同的类(地址不同)。

一、java中的基本数据类型(int、double、short、long、byte、float、boolean、char)判断是否相等,直接使用"=="就行了,相等返回true,否则,返回false。二、但是java中的引用类型的对象比较变态,假设有两个引用对象obj1,obj2,obj1==obj2 判断是obj1,obj2这两个引用变量是否相等,即它们所指向的对象是否为同一个对象。
Python的is和==比较两个对象的两种方法 在Python有两种方式比较两个对象是否相等,分别是is和==,两者之间是不同的 ==比较的是值(如同javaequals方法) is比较的是引用(可以看作比较内存地址, 类似于java的==) >>> n = 1 >>> n is 1 >>> b = '1' >>> b is 1 False >>> n == b False 由于1和’1’不管在值上面还是在引用上面都不同,所以结果都为false >>> n = 1 >>> n is 1 这里有一个知识点,简单来说,对于整形这种pri
1 使用 == 与 equals 判断 == : 它的作用是判断两个对象的地址是不是相等。即,判断两个对象是不是同一个对象。其,对于基本数据类型 ,它比较的是值;对于引用数据类型,它比较的是内存地址。 equals() : 它的作用也是判断两个对象是否相等。但它一般有两种使用情况: 情况一:当类没有重写equals()方法时,通过equals()来比较该类的两个对象时就等价于通过==比较这两个对象。 情况二:当类重写了equals()方法时,这是我们比较常用的方式。此时,我们通常通过重写equal
本文地址:https://www.dutycode.com/post-140.html 除非注明,文章均为 www.dutycode.com 原创,欢迎转载!转载请注明本文地址,谢谢。 如何判断两个对象相等,这个问题实际上可以看做是如何对equals方法和hashcode方法的理解。 从以下几个点来理解equals和hashCode方法: 1、equals的作用及与==的区别。 2、hashcode的作用及与equals的关系。 1、equals的作用及与==的区别。 equals被用来判.
Java 判断两个 bean 对象是否相等的代码,通常使用以下几种方法: 1. 重写 bean 对象equals 方法:在 bean 对象的类重写 equals 方法,根据需要自定义判断两个对象是否相等的逻辑。 2. 使用 Apache Commons Lang 库的 EqualsBuilder:Apache Commons Lang 库提供了 EqualsBuilder 工具类,可以简化判断两个对象是否相等的代码。 import org.apache.commons.lang3.builder.EqualsBuilder; public class Bean { private int id; private String name; public Bean(int id, String name) { this.id = id; this.name = name; public int getId() { return id; public void setId(int id) { this.id = id; public String getName() { return name; public void setName(String name) { this.name = name; @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Bean bean = (Bean) o; return new EqualsBuilder() .append(id, bean.id) .append(name, bean.name) .isEquals(); 使用以上代码,可以使用以下语句判断两个 bean 对象是否相等: Bean bean1 = new Bean(1, "A"); Bean bean2 = new Bean(1, "A"); System.out.println(bean1.equals(bean2)); 输出:true