随笔-8  评论-20  文章-4  trackbacks-0
猜猜下面的输出结果,今天写代码的时候碰到的
Integer a=10;
Integer b
=10;
Integer c
=new Integer(10);
Integer d
=new Integer(10);
        
System.out.println(a
==b);
System.out.println(c
==d);
        
System.out.println(a.equals(b));
System.out.println(c.equals(d));
        
System.out.println(a.equals(c));
posted on 2009-10-20 16:31 ju 阅读(1336) 评论(9)  编辑  收藏 所属分类: 狂想曲

评论:
# re: 轻松一下,猜猜答案 2009-10-20 17:10 | surdomic
true
false
true
true
true  回复  更多评论
  
# re: 轻松一下,猜猜答案 2009-10-20 21:04 | 隔叶黄莺
多例、装箱的实现与对象有池的常识。  回复  更多评论
  
# re: 轻松一下,猜猜答案 2009-10-20 22:14 | 赵薇薇
false
false
true
true
true  回复  更多评论
  
# re: 轻松一下,猜猜答案 2009-10-20 22:20 | 赵薇薇
Integer a = 10;
Integer b = 10;

不是各自给分配了一个引用空间的么.
==比较的是空间地址啊..  回复  更多评论
  
# re: 轻松一下,猜猜答案 2009-10-21 08:59 | juxuejian
@赵薇薇
surdomic是对了哈  回复  更多评论
  
# re: 轻松一下,猜猜答案 2009-10-21 11:05 | 小猴子
Integer a=128;
Integer b=128;


这里改一哈结果就不一样了.  回复  更多评论
  
# re: 轻松一下,猜猜答案 2009-10-21 12:39 | Anonymous
Integer a=10;
Integer b=10;

Integer是对象,怎么可以直接赋值……  回复  更多评论
  
# re: 轻松一下,猜猜答案 2009-10-21 13:21 | 等牛奶的咖啡
==比较的是对象的引用
equals()要看对象的情况,这里比较的是对象的内容
Object的equals()是定义比较引用,在其子类中有的把这个方法覆盖了,重新定义了比较对象内容  回复  更多评论
  
# re: 轻松一下,猜猜答案 2009-11-24 12:46 | anlaneg@qq.com
没有详细的说明,所以让很多人疑惑!

楼主的代码在<1.5的JDK中编译失败.原因不支持自动装箱.

代码在jdk 1.5, 1.6下输出如下:
true
false
true
true
true

  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: