| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 513 人关注过本帖
标题:看看这两个结果有什么不同
只看楼主 加入收藏
ice00mouse
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2007-2-2
收藏
 问题点数:0 回复次数:7 
看看这两个结果有什么不同
public class Test1 {
public static void main(String[] args) {
Integer i1 = 100;
Integer i2 = 100;
if (i1 == i2)
System.out.println("i1 == i2");
else
System.out.println("i1 != i2");
}
}
public class Test2 {
public static void main(String[] args) {
Integer i1 = 200;
Integer i2 = 200;
if (i1 == i2)
System.out.println("i1 == i2");
else
System.out.println("i1 != i2");
}
}

这两个结果会一样么?
重点是为什么?
搜索更多相关主题的帖子: 结果 
2007-04-23 09:15
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
缓存,看看源代码

可惜不是你,陪我到最后
2007-04-23 12:46
Sieben7
Rank: 2
等 级:论坛游民
帖 子:116
专家分:20
注 册:2007-4-16
收藏
得分:0 
为什么不一样啊?
2007-04-23 16:44
梧桐
Rank: 1
等 级:新手上路
帖 子:135
专家分:0
注 册:2005-11-17
收藏
得分:0 
 Test1  输出应该是i1 == i2
 Test2 输出应该是i1 != i2(如果结果不对,请lz见凉)

jdk1.5里好像有说到这个问题
具体的我也记不清楚了,lz可以找本jdk1.5的书看看!

The future is ours to build!
2007-04-23 17:44
Eastsun
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:802
专家分:0
注 册:2006-12-14
收藏
得分:0 

My BlogClick Me
2007-04-23 18:01
wugangjay
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-4-21
收藏
得分:0 
代码好象有问题吧
我把代码拿去编译了下,编译通不过的

2007-04-23 19:01
skylence
Rank: 1
等 级:新手上路
帖 子:92
专家分:0
注 册:2006-11-15
收藏
得分: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),当然不同了.


2007-04-24 22:27
yuyunliuhen
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:1435
专家分:0
注 册:2005-12-12
收藏
得分:0 
用equals比较 结果就不同了吧

Go confidently in the  directions of your dreams,live the life you have imagined!Just do it!
It is no use learning without thinking!
2007-04-24 23:28
快速回复:看看这两个结果有什么不同
数据加载中...
 
   



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

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