一个关于JAVA的简单的程序

[复制链接]
查看11 | 回复3 | 2010-7-25 17:23:44 | 显示全部楼层 |阅读模式
有如下的代码:
class V{
//自定义类V
public class overwrite{
}
public static void main (String[] args){
String s1="123";
//实例化两个对象内容相同
String s2="123";
System.out.println(s1.equals(s2));
//使用equals方法调用

V v1=new V();
//实例化两个V类对象
V v2=new V();
System.out.println(v1.equals(v2));
//使用equals方法v1与v2对象
}
}
执行后的结果是:
true
false
我有几个地方不明白:1

V v1=new V();
//实例化两个V类对象
V v2=new V();
这两句是什么意思啊?
2:还有为什么第二个结果是false?
有没有哪位朋友知道的告诉我一下,谢谢了!!

回复

使用道具 举报

千问 | 2010-7-25 17:23:44 | 显示全部楼层
这个问题已经涉及到比较深的问题了,你连new对象都不大明白,真不知道从何说起啊,看你懂多少了。你的问题:1.V v1=new V();是创建类V的对象,类V就是上面class V{}中定义的类,类是什么,对象是什么。。。。。。任何一本书上都会介绍的。
2.第二个为什么是false?回答:这个涉及到java里面==运算符和equals()方法了,equals是java中的Object类中定义的,Object是所有类的超类,因此所有的类中都有equals方法,在Object中定义的equals其实就是==,==运算符是比较内存地址是否相同,源代码:public boolean equals(Object obj) {r
回复

使用道具 举报

千问 | 2010-7-25 17:23:44 | 显示全部楼层
字符串的equals方法已经被重载过,比较的是他们的内容上面的s1和s2的内容都是"123"所以为true自己定义的对象的equals方法默认是调用Object父类的,Object的equals方法比较的是对象的地址,而v1和v2是两个不同的对象,地址肯定不同,不用说也明白了吧
回复

使用道具 举报

千问 | 2010-7-25 17:23:44 | 显示全部楼层
1这两句的意思就是注释里面说的实例化两个V对象。。就是新建两个V对象v1,v2。和你上面新建了两个String对象s1和s2一样。。2 V类里面没有equals方法。。他的equals方法是从Object类那里继承来的。。Object里面写的是比较两个对象是否==。。明显他们是两个不一样的对象。。所以false。。为什么第一个是t
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行