java怎么比较两个对象是否相等?

 我来答
199757tb
2018-03-31 · TA获得超过2142个赞
知道小有建树答主
回答量:25
采纳率:0%
帮助的人:3498
展开全部

一、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()方法,就知道了。

Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。

life大地皇者
推荐于2018-02-26 · 心理咨询师
life大地皇者
采纳数:2990 获赞数:23191

向TA提问 私信TA
展开全部
java中的基本数据类型判断是否相等,直接使用"=="就行了,相等返回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、判断类的成员是否对应相等。往下就随意发挥了。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gdmmd
2017-06-06 · TA获得超过1279个赞
知道大有可为答主
回答量:1581
采纳率:66%
帮助的人:1014万
展开全部

判断相等需要重写类中的hashcode和equals方法

以下仅供参考

package com.kidd.test.zhidao;

/**
 * Hello world!
 *
 */
public class Execute {
public static void main(String[] args) {
A a1 = new A();
a1.name = "A";

A a2 = new A();
a2.name = "B";

A a3 = new A();
a3.name = "A";

System.out.println("a1=a2? " + a1.equals(a2));

System.out.println("a1=a3? " + a1.equals(a3));
}
}

class A {

@Override
public int hashCode() {
// TODO Auto-generated method stub
return super.hashCode();
}

@Override
public boolean equals(Object obj) {
if (obj instanceof A) {
A a = (A) obj;
return a.name.equals(this.name);
}
return super.equals(obj);
}

String name;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
子弹非弹子575
2017-06-21 · TA获得超过392个赞
知道小有建树答主
回答量:450
采纳率:20%
帮助的人:187万
展开全部
String s="1";
String s1="2";
if(s==s1){
//相等
}else{
//不相等
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友1e4f97d
2017-06-21 · TA获得超过560个赞
知道小有建树答主
回答量:144
采纳率:55%
帮助的人:87.3万
展开全部

首先先确定到底是要判断是同一个对象还是两个对象里面的内容一毛一样,若是要判断是否是同一个对象直接用“==”就好了,若是判断内容是否一毛一样

package com.havefun.play;

public class ObjectJudge {

private String name;
private Integer age;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public Integer getAge() {
return age;
}

public void setAge(Integer age) {
this.age = age;
}

public ObjectJudge(String name, Integer age) {
super();
this.name = name;
this.age = age;
}

// 重写hashcode
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((age == null) ? 0 : age.hashCode());
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}

// 重写equals
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
ObjectJudge other = (ObjectJudge) obj;
if (age == null) {
if (other.age != null)
return false;
} else if (!age.equals(other.age))
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}

@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}

public static void main(String[] args) {
ObjectJudge person = new ObjectJudge("aaa", 11);
ObjectJudge person2 = new ObjectJudge("aaa", 11);
System.out.println(person == person2);
System.out.println(person.equals(person2));
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(23)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式