以下程序段的输出结果为?
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);
}
}
请问答案是什么?为什么
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);
}
}
请问答案是什么?为什么
因为前面n1,n2是两个不同的对象,==判断的是两个对象是否是同一个引用,要判断两个值是否相等要用equals方法!
n1==n2 :判断n1和n2是否指向相同的实例
因为是两个不同的对象,因此地址当然不一样。如果要判断数值
(n1.equals(n2)) それはいいです
还是equals和==的问题
原来我懂的比很多人多~~
n1==n2 :判断n1和n2是否指向相同的实例
你用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方法是等价的。