、先区分下int 和 Integer 这两个概念的区别,因为这是JAVA面试常问的问题。
区别:
int : 基本数据类型,就如:double、char等。
Integer:是一种预定义JAVA包装类,用来对数字字符串进行处理,就如:String 是一种用来处理
字符串的预定义类;Integer可以理解成事int的包装类,它可以实例化对象。
联系:
1、 在JDK 1.5Z之后,可以实现自动装箱(下面讲解)及拆箱操作。
2 、int 和 Integer 都可以表示同一个整数,但是原理不一样,或者说:计算机给它们分配的内存
空间不一样。比如:int x = 20; Integer x = new Integer(20) ,它们都是往计算机中存储了一个
值20,但 是第二个的原理更复杂。接下来就看看下面的例子吧……
2、两行代码:
Integer num; // Line1
num = new Integer(78); // Line2
3、现在对以上代码进行分析,得出我们余下的几个概念。
|- Line1,申明一个整型变量 num ,还没有存到计算机中,因而 num 不是实际数据。
|- Line2,详细分析:
1、使用运算符 new 为变量 num 分配了一个内存空间来存整数。这个内存空间是有地址
的,假如,内存地址编号为:2500 ;
2、Integer(78) 表示把78这个值存储到这个编号为2500的内存中;
3、接下来 new 再返回给 num 的是这个已经存了值的内存空间的地址,即:2500;也就
是说,变量 num 存储的是已分配内存空间的地址2500,而 2500处的内存存储的是数
字 78;
4、用图来说明,如下:
5、好了,经过上面的分析,接下来我们就给出几个概念。
# 1、任何使用类申明的变量(如:num )称作 “引用变量”。严格的说,引用变量时存储
内存空间地址的变量。
# 2、存储数字78的内存空间2500 称作 “Integer 对象”,另外,我们将Integer对象称
作Integer类的 “实例”。
# 3、因为 num 是一个 Integer 类型的引用变量,因此, num 可以存储任意 Integer 对
象的地址;换句话说,num 可以指向或者引用任何 Integer 对象。我们将 num 指向
的 Integer 对象称作“num 对象”
# 4、“Integer 对象” 也即是 “num 对象”。
4、总结:当使用类时,我们首先声明某种类的引用变量,然后使用运算符 new 创建该类的一个对象实
例,并将对象的地址存储到引用变量中。
5、JAVA装箱、拆箱:
1、Java1.5之后,类型包装器有:Double,Float,Long,Integer,Short,Character和BooleanJ2SE
将自动装箱/拆箱引入java中。
2、自动装箱的过程:每当需要一种类型的对象时,这种基本类型就自动地封装到与它相同类型
的包装中。
3、自动拆箱的过程:每当需要一个值时,被装箱对象中的值就被自动地提取出来,没必要再去
调用intValue()和doubleValue()方法。
4、自动装箱,只需将该值赋给一个类型包装器引用,java会自动创建一个对象。例如: Integer
i=100 ,没有通过使用new来显示建立,java自动完成。自动拆箱,只需将该对象值赋给一个
基本类型即可。例如:int j=i 。
区别:
int : 基本数据类型,就如:double、char等。
Integer:是一种预定义JAVA包装类,用来对数字字符串进行处理,就如:String 是一种用来处理
字符串的预定义类;Integer可以理解成事int的包装类,它可以实例化对象。
联系:
1、 在JDK 1.5Z之后,可以实现自动装箱(下面讲解)及拆箱操作。
2 、int 和 Integer 都可以表示同一个整数,但是原理不一样,或者说:计算机给它们分配的内存
空间不一样。比如:int x = 20; Integer x = new Integer(20) ,它们都是往计算机中存储了一个
值20,但 是第二个的原理更复杂。接下来就看看下面的例子吧……
2、两行代码:
Integer num; // Line1
num = new Integer(78); // Line2
3、现在对以上代码进行分析,得出我们余下的几个概念。
|- Line1,申明一个整型变量 num ,还没有存到计算机中,因而 num 不是实际数据。
|- Line2,详细分析:
1、使用运算符 new 为变量 num 分配了一个内存空间来存整数。这个内存空间是有地址
的,假如,内存地址编号为:2500 ;
2、Integer(78) 表示把78这个值存储到这个编号为2500的内存中;
3、接下来 new 再返回给 num 的是这个已经存了值的内存空间的地址,即:2500;也就
是说,变量 num 存储的是已分配内存空间的地址2500,而 2500处的内存存储的是数
字 78;
4、用图来说明,如下:
5、好了,经过上面的分析,接下来我们就给出几个概念。
# 1、任何使用类申明的变量(如:num )称作 “引用变量”。严格的说,引用变量时存储
内存空间地址的变量。
# 2、存储数字78的内存空间2500 称作 “Integer 对象”,另外,我们将Integer对象称
作Integer类的 “实例”。
# 3、因为 num 是一个 Integer 类型的引用变量,因此, num 可以存储任意 Integer 对
象的地址;换句话说,num 可以指向或者引用任何 Integer 对象。我们将 num 指向
的 Integer 对象称作“num 对象”
# 4、“Integer 对象” 也即是 “num 对象”。
4、总结:当使用类时,我们首先声明某种类的引用变量,然后使用运算符 new 创建该类的一个对象实
例,并将对象的地址存储到引用变量中。
5、JAVA装箱、拆箱:
1、Java1.5之后,类型包装器有:Double,Float,Long,Integer,Short,Character和BooleanJ2SE
将自动装箱/拆箱引入java中。
2、自动装箱的过程:每当需要一种类型的对象时,这种基本类型就自动地封装到与它相同类型
的包装中。
3、自动拆箱的过程:每当需要一个值时,被装箱对象中的值就被自动地提取出来,没必要再去
调用intValue()和doubleValue()方法。
4、自动装箱,只需将该值赋给一个类型包装器引用,java会自动创建一个对象。例如: Integer
i=100 ,没有通过使用new来显示建立,java自动完成。自动拆箱,只需将该对象值赋给一个
基本类型即可。例如:int j=i 。