java中的对象等价性讨论

来源:互联网 发布:p2psearcher软件下载 编辑:程序博客网 时间:2024/05/16 19:55
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 stubValue 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方法,否则不可能表现出我们希望的行为。

	
				
		
原创粉丝点击