(1)= =操作符:
第一种情形:比较两个变量的值是否相等。
int a = 5;
int b = 5;
System.out.println(a==b);//true
第二种情形:比较两个变量是否指向同一个对象。
int[] a = new int[3];
int[] b = new int[3];
System.out.println(a==b); //false
System.out.println(a.equals(b));//false
(2)equals方法:
第一种情形:比较引用。 equals默认行为时比较引用,如果不覆盖(即重写)equals方法,此时在比较对性引用时,equals与= =等价。比较规则:当参数obj引用的对象与当前对象为同一对象时,就返回true,否则返回false。
A a = new A();
A b = new A();
System.out.println(a==b); //false
System.out.println(a.equals(b));//false
第二种情形:比较内容,也即值。当在新类中覆盖object类的equals中的方法时,比较规则:如果对象类型一致,并且内容一致,则返回true。这些类型有:java.io.file, jave.util.Date, java.lang.string, 包装类(Integer,Double等)。重写equals方法要满足离散数学特性:自反性,对称性,传递性,一致性,非空性。
覆盖了equals方法实例:
Integer a = new Integer(0);
Integer b = new Integer(0);
System.out.println(a==b); //false
System.out.println(a.equals(b));//true