equals()和==
1、我记得,以前的学习里对equals的使用都是.equals("男"),括号里传的参数是字符串,可是在课程里传的是Object类的对象,这是怎么回事?
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子类对象作为参数
}
}运行效果如下:

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
一、之前传的是字符串因为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。
个人理解,若不对请相互探讨
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星