幻想森林

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

问下JAVA的一点问题

[复制链接]

313

主题

1574

帖子

1万

积分

⑧专业

*永恒国度*

积分
14145
QQ
发表于 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

这话该怎么理解呢?
[img][/img] http://shop33698673.taobao.com被别人嫉妒,证明你优秀,嫉妒别人说明你无能
回复

使用道具 举报

136

主题

1751

帖子

548

积分

版主

Rank: 7Rank: 7Rank: 7

积分
548
发表于 2007-9-30 14:33:08 | 显示全部楼层
就是类方法的重载,String类是从Object类继承来的。
え~え~お!!!
回复 支持 反对

使用道具 举报

8

主题

215

帖子

2223

积分

⑥精研

积分
2223
发表于 2007-9-30 14:40:54 | 显示全部楼层
Object.equals(Object)里确实是用"==",所以语义是判断实例是否为同一个.
一般如果要为一个类提供相等性的判断的话,都需要重写(override,不是重载,overload)这个equals(Object)方法,使它根据内部状态来判断两个实例的内容的"相等性".
String.equals(Object)是重写过的.
回复 支持 反对

使用道具 举报

18

主题

463

帖子

4万

积分

⑧专业

我就是一个茶几...

积分
48325
QQ
发表于 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, 2024-4-20 11:37 , Processed in 0.021237 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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