一个JAva问题

来源:百度知道 编辑:UC知道 时间:2024/06/17 09:12:02
package com.px04;

public class EqualsMethod {
public static void main(String[] args) {
Integer n1 = new Integer(47);
Integer n2 = new Integer(47);
System.out.println(n1.equals(n2));
}
}
这个返回的值是Ture,为什么不是False啊,Integer n1 = new Integer(47);
Integer n2 = new Integer(47);这个位子不是定义后N1和N2的句柄不同吗,怎么会是Ture,我有些不明白,请高手指点一下

n1的n2是两个不同的内存实例没有错,但是equals()方法比较的是对象的内容,两个都是47,所以是真.不是引用的内存空间,所以返回True.
比较引用的内存空间是==
System.out.println(n1==n2);
一定返回False.

quals的方法,是判断值是否一样。。
如果你想判断句柄是否一样,可以使用这个:
System.out.println(n1==n2);
就会如你所愿的返回false了

拜托,兄弟,equals是比较两个变量的值是否一样,是一样当然返回True了,n1,n2是两个不同的变量,分别占据不同的内存单元!!!!!!!!