public class Equivalence{ public static void main(String[] args){ Integer n1 = new Integer(11); Integer n2 = new Integer(11);System.out.println(n1 == n2)}
=======================
false;
== 和 != 比较的是对象的引用。所以,输出为false.如果想比较两个对象的实际内容,则采用equals()函数。
public class EqualsMethod{ public static void main(String[] args){ Integer n1 = new Integer(11); Integer n2 = new Integer(11); System.out.println(n1.equals(n2)); } }
===========================
true;
但是equals这个方法不适用于基本类型,基本类型的比较采用==和!=然而,对于自己创建的类时,
public class Test3 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Value v1 = new Value(); Value v2 = new Value(); v1.i = v2.i = 11; System.out.println(v1.equals(v2)); v1 = v2; System.out.println(v1.equals(v2)); } } class Value{int i;}
===========output=========
false;
true;
由于equals方法的默认比较是引用比较,所以除非在类中覆盖equals方法,否则不可能表现出我们希望的行为。
java中的对象等价性讨论
最新推荐文章于 2021-07-04 23:50:47 发布