一、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和==,两者之间是不同的
==比较的是值(如同java中的equals方法)
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