java的八种基本数据类型。
序号 | 基本数据类型 | 长度 | 对应的包装器类型 | 最大存储量 | 取值范围 |
---|---|---|---|---|---|
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<MyObject> = new List();
包装器类型和其他类型相比,有一点不同之处就是它还可以像基本数据类型那样赋值,而不用显式地去new:
Integer a = 10;
Character c = '哇';
上述写法就是java中的装箱和拆箱,写在下一篇吧。
二、存储方式不同
上面说到,引用数据类型的变量在声明时,需要用new去实例化一个对象,所谓的实例化,就是在堆内存
中分一块空间用以存储数据,至于要分多大一块,就看这个引用数据类型是怎么定义的了。
不论是基本数据类型还是引用数据类型,声明变量时都会在栈内存中占用一块空间,不同的是,基本数据类型的变量所占用的那块空间里面的内容,就是该变量的值,而引用数据类型的变量所占用的那块空间的内容,是实例化的对象在堆内存的地址。
就是说,栈内存中同样的一串二进制字符串“0000 1111”,如果占用它的是基本数据类型的变量a,a就会知道“哦我的值是15”,但如果占用它的是引用数据类型的变量myObject,它就不会觉得自己是15,而是认为“哦我的值是堆内存里地址为00001111的空间中存放的内容”。