JAVA的String工具类提供了equals方法,public boolean equals(Object anObject),入参是Object类,但是使用时入参可以直接是String类的对象,是什么原因?
package cn.it.test2;
public class StudentDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
String s1 = "HelloWorld";
String s2 = "Hello";
System.out.println(s1.equals(s2));
}
}
输出:false
问题:
s1和s2都是String类的对象,语句System.out.println(s1.equals(s2))中,使用了String类中的equals方法,String工具类中的equals方法入参是Object类对象,为什么入参是String类对象时也可以?传String类对象时向上转型为Object类了吗?
Object是所有类型的基类,所以给string没问题。比较的逻辑是按照顺序,一个字符一个字符比较。
equals是Object类的方法,Object本身就表示任意类型,当然也包括String类型,不同的类要用equals方法必须进行重写,String类是默认比较字符串内容。
方法入参如果是父类时,如果传父类引用指向的子类对象时,不因该是Object obj =new String()么?然后用obj作为equals的入参吗?