以下程序段的输出结果为?
public class EqualsMethod {
public static void main(String[] args) {
Integer n1 = new Integer(47);
Integer n2 = new Integer(47);
System.out.print(n1= =n2);
System.out.print(“,”);
System.out.println(n1! =n2);
}
}
请问答案是什么?为什么

解决方案 »

  1.   

    false,true
    因为前面n1,n2是两个不同的对象,==判断的是两个对象是否是同一个引用,要判断两个值是否相等要用equals方法!
      

  2.   

    n1.equals(n2)  :判断n1和n2是否值相等
    n1==n2         :判断n1和n2是否指向相同的实例
      

  3.   

    n1= =n2是判断内存地址的。
    因为是两个不同的对象,因此地址当然不一样。如果要判断数值
    (n1.equals(n2)) それはいいです
      

  4.   

    还是引用和对象的问题
    还是equals和==的问题
    原来我懂的比很多人多~~
      

  5.   

    n1.equals(n2)  :判断n1和n2是否值相等
    n1==n2         :判断n1和n2是否指向相同的实例
      

  6.   

    ==与equalse方法,大多是一样的,都是比较内存地址是否相同。
    你用new来创建对象,就要分配新内存,所以内存不相同。建议楼主看下以前的帖子,这样的问题很多。
    可能有人不同意我说的话,为什么这里用==与equalse方法的结果不一样。
    这个就要你查api了,因为有些类里面把,equalse方法重写了。比如String,Integer等,都把equalse方法重写了。在Integer类里的equalse方法是:
     public boolean equals(Object obj) {
    if (obj instanceof Integer) {
        return value == ((Integer)obj).intValue();
    }
    return false;
        }
    在基本类型中,==与equalse方法是等价的。