Java对象之间的比较之equals和==
2012-10-31 22:15
281 查看
/** * */ package string; /** * @author Administrator * “==” 比较引用,即判断是否指向同一个对象 * “equals()” 默认是比较引用,包装类重写了这些方法,比较对象内容,我们自己的类一般也重写equals方法 * * equals方法属于Object类,默认的是比较两个对象引用是否相等,即是否指向同一个对象 * 和使用==号来比较的结果是一样的。 * * 对于String,Integer等包装类型来说,他们已经重写了Object的equals方法,根据内容判断是否相等。 * * 所以一般来说,对于自己实现的类,要想在某些情况下比较返回true,必须重写equals方法。 * 某些情况下,重写equals方法最好吧hasCode()也重写了,比如要存入Map/Set的时候。 */ //没有重写equals的对象 class CompareObject1{ int v; public CompareObject1(int v){ this.v = v; } } //重写equals的对象 class CompareObject2{ int v; public CompareObject2(int v){ this.v = v; } public boolean equals(Object o){ CompareObject2 c = (CompareObject2)o; return this.v == c.v? true:false; } } public class EqualsTest { /** * @param args */ public static void main(String[] args) { //普通对象比较 CompareObject1 c1 = new CompareObject1(1); CompareObject1 c2 = new CompareObject1(1); System.out.println(c1 == c2); //引用不同 System.out.println(c1.equals(c2)); //引用不同 //String比较 String s1 = new String("hello"); String s2 = new String("hello"); System.out.println(s1 == s2); //引用不同 System.out.println(s1.equals(s2)); //里面的值相同,重写过equals方法 //Integer比较 Integer int1 = new Integer(1); Integer int2 = new Integer(1); System.out.println(int1 == int2); //引用不同 System.out.println(int1.equals(int2)); //里面的值相同,重写过equals方法 //重写了equals方法的普通对象的比较 CompareObject2 o1 = new CompareObject2(1); CompareObject2 o2 = new CompareObject2(1); System.out.println(o1 == o2); //引用不同 System.out.println(o1.equals(o2)); //里面的值相同,重写过equals方法 } } /** * Output: false false false true false true false true * */
相关文章推荐
- 【JAVA学习】java中==、equals()、hashCode()都和对象的比较有关,在java中这三者各有什么用处呢,即java中为什么需要设计这三种对象的比较方法呢?
- java时间(字符串)对象之间的比较/某天时间获取
- 深入java的equals方法,怎么比较两个对象的内容是否相等?对象的内容指的是什么?
- java中的对象比较 == 和equals
- Java进阶:深入equals方法对象相等比较
- JAVA中自定义对象比较时重写equals…
- java中对象的比较---==与equals的使用注意事项
- Java中两个对象的比较 equals()方法和==号的区别
- Java中对象的比较 == 和 equals() -Java 学习笔记 (15)
- Java中对象的比较 == 和 equals()
- Java 对象之间的比较,判断两个对象的某一个属性相等,则对象相等
- Java中两个对象的比较 equals()方法和==号的区别
- JAVA中自定义对象比较时重写equals()方法的同时要重写hashcode()方法
- 包装类对象之间值的比较,全部使用 equals 方法比较
- java中操作符“==”与对象equals()方法的比较
- Java中对象的比较 == 和 equals()
- Java基础(11):字符串—深入理解String对象和比较符==和equals的不同
- java中equals和==之间的区别?clone方法的作用,及其为什么要使用clone方法?如何使用clone复制对象?以及深克隆浅克隆
- Java中对象的比较 == 和 equals()
- Java中对象的equals比较