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()方法。

原文地址:https://www.cnblogs.com/xianzhedeyu/p/3506444.html