Java中“==”和equals()方法

这是在Thinking in Java中看到的。

第一个程序

1 public class Exponents {

2     public static void main(String []args){

3         Integer n1=new Integer(47);

4         Integer n2=new Integer(47);

5         System.out.println(n1==n2);

6         System.out.println(n1!=n2);

7     }

8 }

输出结果:

1 false

2 true

Java中声明的类对象都是引用,n1、n2的内容相同,但两者指向不同的存储位置。

第二个程序

1 public class Exponents {

2     public static void main(String []args){

3         Integer n1=new Integer(47);

4         Integer n2=new Integer(47);

5         System.out.println(n1.equals(n2));

6     }

7 

8 }

输出结果:true

equals()方法默认的行为是比较引用。但大多数Java类库都实现了equals方法用来比较对象的内容,而非比较对象的引用。

第三个程序:

 1 class Value{

 2     int i;

 3 }

 4 public class Exponents {

 5     public static void main(String []args){

 6         Value v1=new Value();

 7         Value v2=new Value();

 8         v1.i=v2.i=100;

 9         System.out.println(v1.equals(v2));

10     }

11 

12 }

输出结果:false

自己定义的类,需要覆盖equals()方法。

 

 

你可能感兴趣的:(equals())