对象与对象可以进行比较?

对象与对象可以进行比较?

对象与对象可以进行比较?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕小班 2019-04-29 16:29:07

同学你好,这是我的代码,代码中确实调用的是重写后的equals方法,同学可以尝试运行一下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
public class Student {
    private int id;
    private String name;
 
    public Student() {
    }
 
    public Student(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 obj) {
        if (obj == null
            return false
        Student temp=(Student)obj; 
        if (getClass() != obj.getClass()) 
            return false
        if(this.getId()==temp.getId()&&this.getName().equals(temp.getName())) 
            return true;
        else 
            return false;
    }      
}

测试类:

1
2
3
4
5
6
7
8
9
10
11
12
13
import java.util.Arrays;
import java.util.Comparator;
 
public class Test {
        public static void main(String[] args) {
             
            Student stu1 = new Student(1,"张三");
            Student stu2 = new Student(1,"张三");
            System.out.println(stu1.equals(stu2));
            System.out.println(stu1==stu2);
             
        }
    }

运行效果是:

http://img1.sycdn.imooc.com//climg/5cc6b5970001f35201590098.jpg

同学可以尝试对比一下,是否为true。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

好帮手慕小班 2019-04-29 15:18:33

同学你好,对象与对象之间是可以相互比较的,如果使用==比较,比较的是等号两边的对象的地址,而通过使用的是equals方法来比较则是比较两个对象的内容是否相同!例如:

Student stu1=new Student(1,"张三");

Student stu2=new Student(1,"张三");

stu1==stu2;  //输出false

stu1.equals(stu2);  //输出true,代表内容相同

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 乜嘢吖 #1
    第二个不也是false吗???????
    2019-04-29 15:23:42
  • 好帮手慕小班 回复 提问者 乜嘢吖 #2
    同学你好,在这里的比较方法是Student类中使用的是重写后的equals方法,比较的是两个对象的内容,所以比较结果是true. equals方法如下所示: public boolean equals(Object obj) { if (obj == null) return false; Student temp=(Student)obj; if (getClass() != obj.getClass()) return false; Student other = (Student) obj; if(this.getId()==temp.getId()&&this.getName().equals(temp.getName())) return true; else return false; } Student类中有int类型的id,String类型的name 如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
    2019-04-29 15:57:04
  • 提问者 乜嘢吖 回复 好帮手慕小班 #3
    没有重写吧,你只是调用的equals的类吧
    2019-04-29 16:02:14
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师
插入代码