基本数据类型包装类 1
有了基本类型之后为什么还要有包装器类型呢?我们知道Java是一个面相对象的编程语言,基本类型并不具有对象的性质,为了让基本类型也具有对象的特征,就出现了包装类型(如我们在使用集合类型Collection时就一定要使用包装类型而非基本类型),它相当于将基本类型“包装起来”,使得它具有了对象的性质,并且为其添加了属性和方法,丰富了基本类型的操作。
1、Java 提供两种不同的类型:基本类型(内置类型)和引用类型(封装类型)。
Java中8种基本数据类型总结 |
|||||
序号 |
数据类型 |
封装类 |
默认值 |
可表示数据范围 |
|
1 |
byte(位) |
1字节 |
Byte |
0 |
-128~127 |
2 |
short(短整数) |
2字节 |
Short |
0 |
-32768~32767 |
3 |
int(整数) |
4字节 |
Integer |
0 |
-2147483648~2147483647 |
4 |
long(长整数) |
8字节 |
Long |
0 |
-9223372036854775808~9223372036854775807 |
5 |
float(单精度) |
7位 |
Float |
0.0 |
1.4E-45~3.4028235E38 |
6 |
double(双精度) |
15位 |
Double |
0.0 |
4.9E-324~1.7976931348623157E308 |
7 |
char(字符) |
2字节 |
Character |
空 |
0~65535 |
8 |
boolean |
Boolean |
flase |
true或false |
2、int是基本类型,直接存数值。如:int i = 5;
Integer是封装类型,产生对象时用一个引用指向这个对象。如:Integeri = new Integr(5)
3、Java把内存划分成两种:一种是栈内存,另一种是堆内存。
在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配 ,而实际的对象是在存储堆内存中 。即 :
int i = 5;//直接在栈中分配空间
Integer i = new Integr(5);//对象是在堆内存中,而i(引用变量)是在栈内存中 。在堆中分配的内存,由java虚拟机的自动垃圾回收器来管理.。
4、当需要往ArrayList,HashMap中放东西时,像int,double这种基本类型是放不进去的,因为容器都是装object(对象类型)的,这就需要这些基本类型的封装类了,Java中每种基本类型都有相应的封装类。
二者可以相互转换:
1 Character ch = new Character('x');
2 char c = ch;
3 char c = 'c';
4 Character ch = new Character(c);
二者之间也存在一些区别:
1.声明方式不同,基本类型不适用new关键字,而包装类型具有对象的性质需要使用new关键字来在堆中分配存储空间;
2.存储方式及位置不同,基本类型是直接将变量值存储在堆栈中,而包装类型是将对象放在堆中,然后通过引用来使用;
3.初始值不同,基本类型的初始值如int为0,boolean为false,而包装类型的初始值为null
4.使用方式不同,基本类型直接赋值直接使用,而包装类型在集合Collection、Map时会使用到。