作者: 武志红 时间: 2013-5-23 10:05
public static void method()
{
Integer x = new Integer("123"); ///封装的都是Integer类型的对象,都会转变成Integer类型数据。
Integer y = new Integer(123); //我加一句,使用了new 会在内存栈开不同地址空间给x与y,==比较的是内存地址,false;楼主可以去掉new再验证下结果
sop("x==y:"+(x==y));//结果为假
sop("x.equals(y):"+x.equals(y));//结果为真,这里毕老师的解释是说比较的是两个对象的数值 所以相等。不是一个是字符串"123"一个是整数123,这个数值怎么又相同了啊??不解
} 作者: 陈潜 时间: 2013-5-23 10:21
public static void method()
{
Integer x = new Integer("123");
Integer y = new Integer(123);
sop("x==y:"+(x==y));//因为X和Y是两个不同的对象,所以内存地址不同,==比较的内存地址,所以不同
sop("x.equals(y):"+x.equals(y));//楼主可能对Integer的构造方法不知道?new Integer("123")这个构造方法中的“123”,构造一个新分配的 Integer 对象,它表示 String 参数所指示的 int 值,所以其实值还是和new Integer(123)一样都是123,而Integer中覆写了equals方法,比较的就是Integer的值,所以123==123.
}作者: 张世威 时间: 2013-5-23 10:54
public static void method()
{
Integer x = new Integer("123");
Integer y = new Integer(123);