本帖最后由 崔岩 于 2012-3-14 09:41 编辑
==一般用于比较基本数据类型。当比较对象的引用时,是比较两边指向的是不是同一个内存地址。但这有的时候是废话,指向地址相同了,内容当然一样。可是当指向不同的地址,但对于我们的业务需求角度来看,不同地址里的内容也可以视为相等的,比如字符串。 String str1=new String("abc"); String str2=new String("abc") ;两个字符串明显指向不同地址,但站在英语的角度,他俩是被认为一样的。
但是要主意equals方法。当我们 str1.equals(str2) 时,返回值是true,这是因为调用这个equals的对象是String类型的,在String类中实际上是重写了equals方法,人家已经为我们做好了字符逐个比对的过程。
而equals方法是所有类里都默认有的方法,但是不要以为对于我们自己定于的类,直接使用equals方法就能实现类中各个成员的逐个比对。equals默认的操作其实还是比较两边指向的是不是同一个对象,并不会比较里面的内容。所有我们仍需要按照我们认为相等的标准自己来重写equals方法。String里可以直接用是因为sun公司已经给我们写完了。比如我们现在有一个家庭有两所房子,这家人在两处房子轮流住,现在我们标准是认为房子的所有者一样,则认为房子一样。这时用默认的equals就无法满足需求,因为地址不一样,默认判断为假。这就要重写equals,当房子的所有者属性相等时,为真。对于我们自定义的类,都要重写equals |