| 序号 | 基本数据类型 | 长度 | 对应的包装器类型 | 最大存储量 | 取值范围 |
|---|---|---|---|---|---|
| 1 | byte | 1字节 | Byte | 255 | -128~127 |
| 2 | short | 2字节 | Short | 63336 | -32768~32767 |
| 3 | int | 4字节 | Integer | 232-1 | -231~231-1 |
| 4 | long | 8字节 | Long | 264-1 | -263~263-1 |
| 5 | float | 4字节 | Float | -3.4E38~3.4E38 | |
| 6 | double | 8字节 | Double | -1.7E308~1.7E308 | |
| 7 | char | 2字节 | Character | 存储unicode码 | |
| 8 | boolean | Boolean | true或者false |
为什么要给每一个基本类型再配一个包装器类型呢?这是因为java作为一种面向对象的编程语言,但基本类型并不具有对象的性质,所以就有了包装器类型, 相当于将基本类型“包装”起来,为其添加属性和方法,使其具有对象的性质。所以说,包装器类型实际上就是有一些特殊的引用数据类型,都是基类Object的孩子。
那就说说基本数据类型和引用数据类型的区别。
基本数据类型和引用数据类型的区别 一、声明方式不同声明基本数据类型的变量不需要实例化:
int a = 10; // 给a赋值为10 byte b; // 只声明不赋值 char c = '哇';
而声明对象时需要用new来实例化:
Integer a = new Integer(10); List= new List();
包装器类型和其他类型相比,有一点不同之处就是它还可以像基本数据类型那样赋值,而不用显式地去new:
Integer a = 10; Character c = '哇';
上述写法就是java中的装箱和拆箱,写在下一篇吧。
二、存储方式不同上面说到,引用数据类型的变量在声明时,需要用new去实例化一个对象,所谓的实例化,就是在堆内存中分一块空间用以存储数据,至于要分多大一块,就看这个引用数据类型是怎么定义的了。
不论是基本数据类型还是引用数据类型,声明变量时都会在栈内存中占用一块空间,不同的是,基本数据类型的变量所占用的那块空间里面的内容,就是该变量的值,而引用数据类型的变量所占用的那块空间的内容,是实例化的对象在堆内存的地址。
就是说,栈内存中同样的一串二进制字符串“0000 1111”,如果占用它的是基本数据类型的变量a,a就会知道“哦我的值是15”,但如果占用它的是引用数据类型的变量myObject,它就不会觉得自己是15,而是认为“哦我的值是堆内存里地址为00001111的空间中存放的内容”。



