equals()和==

equals()和==

1、我记得,以前的学习里对equals的使用都是.equals("男"),括号里传的参数是字符串,可是在课程里传的是Object类的对象,这是怎么回事?

2、在课程里==它比较的是什么?是两个对象的引用地址是否相等?

正在回答

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

2回答

你好!关于传参的问题,可以这么理解,equals()方法的参数是Object类型的,而Object类型是所有类的父类,所以,调用equals()方法时,可以接收任何类型的对象。也就是方法参数如果是父类的类型,那么调用方法时,可以传递子类的对象作为参数。以如下代码为例:注意看主方法中的注释

public class Animal {
private String name;
private int age;
public Animal() {}
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
public  class Cat extends Animal{
private String color;
public Cat() {
}
public Cat(String name, int age,String color) {
super(name,age);
this.color = color;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}
public class Test1 {
public void check(Animal animal) {
System.out.println(animal.getName());
}
public static void main(String[] args) {
Animal animal=new Animal("animal01",4);
Cat cat=new Cat("cat01",2,"white");
Test1 test=new Test1();
test.check(animal);//传递Aniaml对象作为参数
test.check(cat);//传递Animal子类对象作为参数
}
}

运行效果如下:

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

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

  • 鱼儿0001 提问者 #1
    在这里感谢老师的代码回复,我仔细的看了。但是,我仍然不理解,既然在Test类中的check方法里,传的参数必须得是Animal类对象,怎么能让Animal的子类Cat类对象cat也能被传进去?这到底是是怎么回事啊? --------越想越想挠头
    2019-05-05 10:36:14
  • 好帮手慕珊 回复 提问者 鱼儿0001 #2
    同学,你好!这个规则建议你可以记住了,其实这就是Java的语法规则,允许这么传值。在后面的学习中,你会发现,多态就是基于这个的,就会慢慢发现这么用的好处。祝学习愉快!
    2019-05-05 10:52:47
松糕 2019-05-01 12:07:42

一、之前传的是字符串因为String重写了equals() 的方法, Object类的对象是父类的equals的方法。

二、==比较的地址值,

tring str1=new String("hello");

String str2=new String("hello");

flag=str1.equals(str2);

System.out.println("str1和str2的引用对比:"+flag);

System.out.println("str1和str2的引用对比:"+(str1==str2));

==对比的输出是false因为实例化了不同的对象空间,地址值不同,所以不是true。

个人理解,若不对请相互探讨

  • 提问者 鱼儿0001 #1
    你好,今天好悲催,没有老师来回答问题,可是我的学习还在继续 * *! 那么,Object类的对象是父类的equals的方法,这是什么意思?
    2019-05-01 13:13:03
  • 好帮手慕阿莹 回复 提问者 鱼儿0001 #2
    非常抱歉哦,五一假期期间,老师值班人数较少,老师需要依次解答同学们的问题,请同学谅解一下。非常抱歉。之前传的字符串就是String的对象哦,String也是属于Object的子类,所以这里可以统称为Object类。2、是的,比较的是两个对象的地址值。如果我的回答解决了你的问题,请采纳。祝学校愉快。
    2019-05-01 16:49:12
  • 提问者 鱼儿0001 回复 好帮手慕阿莹 #3
    老师,你的回答我不懂:之前传的字符串就是String的对象哦,String也是属于Object的子类,所以这里可以统称为Object类。我不明白老师话的意思,感觉越来越糊涂了。
    2019-05-02 10:50:58
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

帮助反馈 APP下载

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

公众号

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

在线咨询

领取优惠

免费试听

领取大纲

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