标题:[转载]一个Integer的问题
只看楼主
ILoveMK
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:487
专家分:0
注 册:2007-2-12
 问题点数:0 回复次数:17 
[转载]一个Integer的问题

import java.io.*;

class Y{
public static void main(String []args){
Integer a = 200;
Integer b = 200;
if(a==b)
System.out.println("true");
else
System.out.println("false");
}
}
结果是
false

当改成a=100,b=100的时候为什么是true
==这个不是只是否是同一对象吗?在里面明显a跟b不是一个东西!

搜索更多相关主题的帖子: Integer 
2007-04-08 22:22
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
得分:0 
127 128 是个界限

嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2007-04-08 22:36
ILoveMK
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:487
专家分:0
注 册:2007-2-12
得分:0 
麻烦说出原因,谢谢。。。

天下归心
2007-04-08 22:46
Eastsun
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:802
专家分:0
注 册:2006-12-14
得分:0 
看看<JAVA Language Specification>或者把上面的代码编译后再反编译一下就知道怎么回事了.

Integer a = 200;
Integer b = 200;

等价于:

Integer a =Integer.valueOf(200);
Integer b =Integer.valueOf(200);


而valueOf的源代码是:

public static Integer valueOf(int i) {
final int offset = 128;
if (i >= -128 && i <= 127) { // must cache
return IntegerCache.cache[i + offset];
}
return new Integer(i);
}

可以看出,当i属于[-128,127]时,得到的是cache中的预先设好的值,所以i一样,Integer.valueOf(i)也是一样;
而其余情况会得到一个new Integer(i),当然不同了.

My BlogClick Me
2007-04-08 22:52
ILoveMK
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:487
专家分:0
注 册:2007-2-12
得分:0 
高手,谢谢了~~

天下归心
2007-04-08 22:55
Eastsun
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:802
专家分:0
注 册:2006-12-14
得分:0 
呵呵,不客气~

My BlogClick Me
2007-04-08 22:58
hwj20070118
Rank: 1
等 级:新手上路
帖 子:94
专家分:0
注 册:2007-1-18
得分:0 
楼上,能不能再讲清楚一下.
2007-04-08 23:16
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 
呵呵,还有如何清楚,Eastsun已经讲得非常清楚了

连源代码都附出来了

可惜不是你,陪我到最后
2007-04-09 09:01
しΟν∈→鱈
Rank: 1
等 级:新手上路
威 望:2
帖 子:369
专家分:0
注 册:2006-10-25
得分:0 
Eastsun应该给他带上
Integer a = new Integer(100);
Integer b = new Integer(100);
a==b为FALSE的

开开心心的过&玩每一天!!!!
2007-04-09 11:54
Satyr
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2006-4-7
得分:0 
怎么反编译啊
小问一下

C++的博大精深让我叹服
2007-04-09 19:08



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-130228-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.425661 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved