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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李阳 中级黑马   /  2013-3-6 17:31  /  2522 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李阳 于 2013-3-7 11:05 编辑

考试第一题我就蒙了!
Integer a = 100;//自动装箱
int b = 100;//没有装箱
a是对象的引用,b是变量,为什么a==b就true呢?

9 个回复

倒序浏览
这个我觉得会不会是因为他们比较的时候把int那边的给自动装箱了,这样的话根据Integer类型的比较方式的话只要两个值一样就相等了。
回复 使用道具 举报
Integer 是int类型的包装类,int和Integer之间存在装箱和拆箱。这是由系统自动操作。所以a==b会返回true。
回复 使用道具 举报
本帖最后由 李洪因 于 2013-3-6 19:56 编辑

int :基本数据类型,就如:double、char等。
Integer:是一种预定义JAVA包装类,用来对数字字符串进行处理,就如:String 是一种用来处理字符串的预定义类;
Integer可以理解成事int的包装类,它可以实例化对象。
联系:
Integer与int类型的比较
这里就无所谓是谁与谁比较了,Integer == int与int == Integer的效果是一样的,都会把Integer类型变量拆箱成int类型,然后进行比较,相等则返回true,否则返回false。同样,拆箱调用的还是intValue()方法。


int 和 Integer 都可以表示同一个整数,但是原理不一样,或者说:计算机给它们分配的内存空间不一样。比如:
int x = 20;
Integer x = new Integer(20)
它们都是往计算机中存储了一个值20,
但是第二个的原理更复杂。
两行代码:
Integer num;  // Line1
num = new Integer(78); // Line2
现在对以上代码进行分析,得出我们余下的几个概念。
Line1,申明一个整型变量 num ,还没有存到计算机中,因而 num 不是实际数据。
Line2,详细分析:
1、使用运算符 new 为变量 num 分配了一个内存空间来存整数。这个内存空间是有地址
的,假如,内存地址编号为:2500 ;
2、Integer(78) 表示把78这个值存储到这个编号为2500的内存中;
3、接下来 new 再返回给 num 的是这个已经存了值的内存空间的地址,即:2500;也就
是说,变量 num 存储的是已分配内存空间的地址2500,而 2500处的内存存储的是数字 78;
经过上面的分析,接下来我们就给出几个概念。
1、任何使用类申明的变量(如:num )称作 “引用变量”。严格的说,引用变量时存储
内存空间地址的变量。
2、存储数字78的内存空间2500 称作 “Integer 对象”,另外,我们将Integer对象称
作Integer类的 “实例”。
3、因为 num 是一个 Integer 类型的引用变量,因此, num 可以存储任意 Integer 对
象的地址;换句话说,num 可以指向或者引用任何 Integer 对象。我们将 num 指向
的 Integer 对象称作“num 对象”
4、“Integer 对象” 也即是 “num 对象”。
回复 使用道具 举报
Integer a = 100;   ------->100是int类型,当把100赋值给a时,int类型的100会自动装箱成Integer
int b = 100;

a==b ---->a和b进行比较时,Integer类型的a会自动拆箱成int类型,所以在进行比较时,返回true
回复 使用道具 举报
兄弟,我告诉你,其实这个是jdk版本的问题:
在jdk1.5及其以上的版本中,基本类型和封装类能自动转化,所以a==b就true。
但是你在jdk1.5版本以下就没有这个自动转化的特征了,所以a==b就false。

回复 使用道具 举报
Integer a = 100;
int b = 100;
==     判断的是引用是不是指向同一个地址。很显然,在堆内存中, a 与 b 都指向100 这个内存块地址。a和b进行比较时,Integer类型的a会自动拆箱成int类型。
回复 使用道具 举报
7楼正解
回复 使用道具 举报
按照我的理解
Integer是个高级的int,他是一个类,其中包括创建一个int部分。如果你只是Integer a=100; 而没有new 实例化的话,这个表达式就完全和int a =100;相同了。
所以返回为 true。

希望对你有帮助
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马