A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张宁 中级黑马   /  2013-3-29 13:11  /  1936 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public static void method()
{
    Integer x = new Integer("123");

    Integer y = new Integer(123);

    sop("x==y:"+(x==y));
    sop("x.equals(y):"+x.equals(y));
}

结果我知道,谁给我讲一下这里的区别。

点评

 如果仍有问题,请继续追问,如果问题已解决,请将分类改为已解决,谢谢  发表于 2013-3-29 18:44

评分

参与人数 1黑马币 +9 收起 理由
张熙韬 + 9

查看全部评分

4 个回复

正序浏览
本帖最后由 HM朱蛟 于 2013-3-30 01:23 编辑

很简单 一句话讲清楚

sop("x==y:"+(x==y));  比较的是2个对象的引用,也就是地址,地址不同,当然为假
sop("x.equals(y):"+x.equals(y));  Integer对象复写了equls方法,比较的是数值,所以记住,数据包装类里的equals和以前学习的Object里的equls是2码事


QQ截图20130330012222.png (6.16 KB, 下载次数: 21)

QQ截图20130330012222.png

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
首先看一下jdk api文档,Integer包装类的两个构造函数:
Integer(int value) :构造一个新分配的 Integer 对象,它表示指定的 int 值。
Integer(String s) :构造一个新分配的 Integer 对象,它表示 String 参数所指示的 int 值。

构造函数差别不是很大,不管传入的是int类型还是String类型,都会包装成Integer类型,用的时候可以parseInt也可以toString;
在看看两句输出语句:1,==是运算符,在对象上使用时表示比较的是两个对象的地址是否一样?由于x,y都new了对象,所以地址不一样,返回false;
                              2,equals,这个是Object类的方法,但是Integer类把Object类的equals方法覆盖了,形式是:
boolean equals(Object obj) :比较此对象与指定对象。就是比较两个对象保存的内容是否相同,x.equals(y),应该返回true;
不知道对不对啊,我没运行你的代码,结果是根据我已有的知识作为回答的,这里我建议你遇到问题时,首先想到的应该是查阅JDK API文档,我认为这是学Java最好的资料了,呵呵呵

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
技术分3的给技术分30的回答问题。。。。

是我疯了 还是世界疯了  难道楼上是版主小号?

评分

参与人数 1黑马币 +3 收起 理由
张熙韬 + 3

查看全部评分

回复 使用道具 举报
sop("x==y:"+(x==y));  "==" 是Object 中的方法,比较的是两个对象的地址。
sop("x.equals(y):"+x.equals(y)); 这里 equals 方法是 Integer 对象类 中重写了Object  类中的 equals 中的方法:比较的是对象的内容。
希望我的回答能给你点帮助。{:soso_e128:}

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1 鼓励一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马