论坛首页 入门讨论版 Java

请教equals比较问题

浏览 565 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
时间:2008-05-06
假设您创建了自己的类,就象下面这样:
class Value {
int i;
}

public class EqualsMethod2 {
public static void main(String[] args) {
Value v1 = new Value();
Value v2 = new Value();
v1.i = v2.i = 100;
System.out.println(v1.equals(v2));
}
}
该段代码是在thinking in java中复制下来的,我想请问为什么这段代码最后的结果为false?
   
时间:2008-05-06
看來我的基礎也不好啊!我也不知道這個為什么?
   
0 请登录后投票
时间:2008-05-06
Java最基本的东西了
与其整天上论坛看帖子,不如好好学习一下Java基础(Thinking In
Java 不适合当基础教程,Core Java很适合)

equals默认是==操作(在Object里面定义的,可以看看),
==比较的是对象的地址(引用),就是对象存储的地方,
2个不同的对象,存的地方当然不一样
   
0 请登录后投票
时间:2008-05-06
Value v1 = new Value();
Value v2 = new Value();
System.out.println(v1.equals(v2));
对象比较 ,根本两个对象
   
0 请登录后投票
时间:2008-05-06
new 了两个对象啊
用debug看看 引用的地址是不一样的
   
0 请登录后投票
时间:2008-05-06
public static void main(String[] args) {
        // TODO code application logic here
        File f1=new File("c:\\");
        File f2=new File("c:\\");

        System.out.println(f1.equals(f2));
        
    }


這個輸出為TRUE
我為這個問題還去仔細讀了下棧與堆的區別,難道用戶自定義的,和系統自己帶的不一樣?
知道很基礎但是還是很想搞清楚!
   
0 请登录后投票
时间:2008-05-07
高手路過幫我看下!
   
0 请登录后投票
时间:2008-05-07
File是包装类型,类中已经重写了equals方法,所以他比较的是内容,结果为true!
   
0 请登录后投票
时间:2008-05-11
学习了·~呵呵我也不懂啊···metaphy说的算是学习 ··了
   
0 请登录后投票
时间:2008-05-11
equal比较的是对象的等(内容+地址)
==比较的是内容
   
0 请登录后投票
论坛首页 入门讨论版 Java

跳转论坛:
JavaEye推荐