//Equals2.java
class Integer{
private int i;
public Integer(int i){
this.i=i;
}
}
public class Equals2{
public static void main(String[] args){
Integer n1=new Integer(100);
Integer n2=new Integer(100);
System.out.println(n1==n2);
System.out.println(n1.equals(n2));
}
}---------------------------------------------------------------------------
//Equals.java
public class Equals{
public static void main(String[] args){
Integer n1=new Integer(100);
Integer n2=new Integer(100);
System.out.println(n1==n2);
System.out.println(n1.equals(n2));
}
}----------------------------------------------------------------------Equals.java和Equals2.java的equals函数为什么返回不同的布尔值?在本2例中有何不同?

解决方案 »

  1.   

    哦,你的Equals用的是java.util.Integer吧?Equals2用的是你自己定义的Integer,你自己定义的没有重写equals函数,于是调用Object默认的equals函数,而Object的equals比较的是两个引用是否引用同一个对象。java.util.Integer重写了equals方法,比较的是两个Integer所代表的整数的大小。