,重写equals方法,定义自己的比较方式。www.2cto.com
二、 String 类代表字符串。字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以可以共享。(这句话来自String类的API文档)。对于String类中的equals方法,你可以这样理解,她 比较的是字符串内容,只要字符串的内容相同就返回true;例如:String s1="abc";String s2="abc" String s3="abcd",s1.equals(s2)结果是true ,而s1.equals(s3)是false;
三,对于你第一个示例没有重写equals方法得到了的结果,你可以用上述第二点解释。 对于下面的示例,你是覆写了Object类中的equals方法,通过比较姓名和年龄两个是否相同返回结果建立自己Student类的自己的比较方法。
String类在底层已经复写了Object这个上帝类的equals方法,String类的equals方法判断的依据是被判断的两个字符串常量字符序列是否相同,若是就返回true;而其它的大部分类或者程序员自定义的类,都直接调用的是Object类的equals方法,这时的equals方法判断的依据仅仅是两个对象的引用是否都指向同一个对象。如果是jdk提供的类,进去看看它有没有覆写equals,如果它没有覆写而你又要使用则需自己覆写。