找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3259|回复: 3

问下JAVA的一点问题

[复制链接]
发表于 2007-9-30 13:57:25 | 显示全部楼层 |阅读模式
String s1=new String("ab");
        String s2=new String("ab");
        System.out.println(s1.equals(s2));

equals()方法使用"=="运算符比较两个对象,这是两者相通之处,因此,s1.equals(s2)应该返回false.但,String类重载了继承Object类的equals(),所以 s1.equals(s2) 返回了true

这话该怎么理解呢?
发表于 2007-9-30 14:33:08 | 显示全部楼层
就是类方法的重载,String类是从Object类继承来的。
发表于 2007-9-30 14:40:54 | 显示全部楼层
Object.equals(Object)里确实是用"==",所以语义是判断实例是否为同一个.
一般如果要为一个类提供相等性的判断的话,都需要重写(override,不是重载,overload)这个equals(Object)方法,使它根据内部状态来判断两个实例的内容的"相等性".
String.equals(Object)是重写过的.
发表于 2007-10-2 02:12:17 | 显示全部楼层
equals()方法使用"=="运算符比较两个对象,这是两者相通之处,因此,s1.equals(s2)应该返回false.但,String类重载了继承Object类的equals(),所以 s1.equals(s2) 返回了true

这话该怎么理解呢?
-------------------------------------
简单说
Object类下有方法equals()
String类继承Object类,并且也有一个equals()方法(同名同参)


如果
Object a=new Object;
a.equals(xxx);
就执行Object下的equals方法

如果
String a=new String;
a.equals(xxx);
就执行String下的equals方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|幻想森林

GMT+8, 2026-11-6 18:25 , Processed in 0.013872 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表