应该说v1, v2是两句柄,它们指向的对象的实际内容都是1,根据这些,System.out.println(v1.equals(v2));返回的应该是true呀?

解决方案 »

  1.   

    再说你自己写的类,没有实现了equals()这个方法,知道吧,你可以看一下String的源码
      

  2.   

    v1,v2都是句柄,他们指向不同的内存地址,equals比较的是两个句柄,如果你要比较两个对象的实际内容,就必须重载equals()
      

  3.   

    你可能需要重载equals方法,你自定义的类编译器可能无法确定比较的方法,只能根据最原始的reference地址进行比较(object的equals方法),所以你需要重载你的equals方法。
    你可以看到比如String的equals方法,它也是重载的。比较的规则需要你自己来定义。
      

  4.   

    你调用的equels()是object的equels(),它们当然不同了你应该覆写equels()方法