Integer到底怎么回事呀?

yinxiaoxiong389312 2010-11-17 10:57:38
像这样一段代码:
Integer i=11;
Integer j=11;
System.out.println(i==j);
System.out.println(i.equals(j));
Integer ii=1111;
Integer jj=1111;
System.out.println(ii==jj);
System.out.println(ii.equals(jj));
结果为什么是:
true
true
false
true
我觉得是
false
true
false
true才对呀!
Java对Integer做了什么处理?
...全文
423 45 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
45 条回复
切换为时间正序
请发表友善的回复…
发表回复
何一涛 2010-11-20
  • 打赏
  • 举报
回复
学习了
ETCentury 2010-11-20
  • 打赏
  • 举报
回复
Java语言规范指出:特定的基本类型一定得被装箱成包装对象。这些对象会被高速缓存以重复使用,并且会被当作一般使用的对象。这些特殊的值是:boolean: true、false byte: 所有的值 short、int和long: -128~127 char: \u0000~\u007F float和double:不会被缓存

也是刚学的,希望有帮助
wangzexy391963822 2010-11-20
  • 打赏
  • 举报
回复
新来的,学习中。
90后小朋友 2010-11-19
  • 打赏
  • 举报
回复
是一个容器,用来方整数的。 知道就可以了
zhuzeitou 2010-11-19
  • 打赏
  • 举报
回复
提问前应该先翻阅已有资源,否则以前的帖子存在的理由是什么呢?
话说《提问的智慧》是好东西……
  • 打赏
  • 举报
回复
学习了 不要说人家傻逼什么的 可能人家正在迷惑中 可以理解 的
lishaolei309 2010-11-18
  • 打赏
  • 举报
回复
Int是java的原始数据类型,Integer是java的为int提供的封装类
hjx_gb2000 2010-11-18
  • 打赏
  • 举报
回复
呵呵,看看源码,什么都清楚了
yilong7797 2010-11-18
  • 打赏
  • 举报
回复
网上挺多资料的。好像是关于自动装箱的问题,这是我的一些总结:
自动装箱
把包装器当基本变量一样使用(Java5的新功能)API开发人员决定:对于所有的包装
器类,如果两个对象具有相同的类型和相同的值,则认为他们是相等的。The API developers decided that for all the wrapper classes, two objects are equal if they are of the same type and have the same value。eg:
Integer i1 = 1000;
Integer i2 = 1000;
if(i1 != i2) System.out.println("different objects");
if(i1.equals(i2)) System.out.println("meaningfully equal");
输出:
different objects
meaningfully equal
下面代码又会如何呢?Integer i3 = 10;
Integer i4 = 10;
if(i3 == i4) System.out.println("same object");
if(i3.equals(i4)) System.out.println("meaningfully equal");
输出:
same object
meaningfully equal
为了节省内存,对于下列包装器对象的两个实例,当他们的基本值相同时,他们总是==:
(1) Boolean
Boolean b1 = true;
Boolean b2 = true;
System.out.println("b1 == b2 : " + (b1 == b2));
Boolean b3 = new Boolean(true);
Boolean b4 = new Boolean(true);
System.out.println("b3 == b4 : " + (b3 == b4));
输出:
b1 == b2 : true
b3 == b4 : false
(2) Byte
(3) Character from \u0000 to \u007f (7f是进制的127)
(4) Short and Integer from -128 to 127
但是需要注意的是:如果是new出来的对象,那么就不相等了,这点跟String类型是相同的,也是属于优化的一种,例如:
Integer i1 = new Integer(1);
Integer i2 = new Integer("1");
System.out.println(i1 == i2);
Integer i3 = new Integer(1);
Integer i4 = new Integer(1);
System.out.println(i3 == i4);
输出:
false
false
Invscenery 2010-11-18
  • 打赏
  • 举报
回复
学习了
wjb_yd 2010-11-18
  • 打赏
  • 举报
回复
[Quote=引用 30 楼 mengyalizuopeng 的回复:]
每隔两天 CSDN上这个傻逼问题就会出现。。
还有那个 == 和 equals
[/Quote]

真正的傻逼,不解释~
Rick_ang 2010-11-18
  • 打赏
  • 举报
回复
[Quote=引用 31 楼 gukuitian 的回复:]

引用 30 楼 mengyalizuopeng 的回复:
每隔两天 CSDN上这个傻逼问题就会出现。。
还有那个 == 和 equals

什么叫傻逼问题?
你这就没疑惑过吗
[/Quote]
论坛有个功能叫搜索
tangw108030801 2010-11-18
  • 打赏
  • 举报
回复
Integer 是 int 类型的包装类,类似的还有Float是float的包装类,Character是char类型的包装类
gukuitian 2010-11-18
  • 打赏
  • 举报
回复
[Quote=引用 30 楼 mengyalizuopeng 的回复:]
每隔两天 CSDN上这个傻逼问题就会出现。。
还有那个 == 和 equals
[/Quote]
什么叫傻逼问题?
你这就没疑惑过吗
mengyalizuopeng 2010-11-18
  • 打赏
  • 举报
回复
每隔两天 CSDN上这个傻逼问题就会出现。。
还有那个 == 和 equals
zhuzeitou 2010-11-18
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 mic47 的回复:]

这些代码是从那弄得?
引用 7 楼 sfsam 的回复:
下面是Integer包装类类里对数据处理的源代码
public static Integer valueOf(int i) {
final int offset = 128;
if (i >= -128 &amp;&amp; i <= 127) { // must cache
return IntegerCac……
[/Quote]

安装jdk的时候会有一个src.zip,里面就是源码
wugui414 2010-11-18
  • 打赏
  • 举报
回复
学习了
jude_cn 2010-11-18
  • 打赏
  • 举报
回复
现在才知道。。。
mic47 2010-11-18
  • 打赏
  • 举报
回复
这些代码是从那弄得?
[Quote=引用 7 楼 sfsam 的回复:]
下面是Integer包装类类里对数据处理的源代码
public static Integer valueOf(int i) {
final int offset = 128;
if (i >= -128 && i <= 127) { // must cache
return IntegerCache.cache[i + offset];
}
return ne……
[/Quote]
ETCentury 2010-11-17
  • 打赏
  • 举报
回复
确实是月经贴
加载更多回复(22)

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧