java有8种基本数据类型:
基本数据类型 | 对应封装类型 | 最小值 | 最大值 |
---|---|---|---|
byte | Byte | -128(-2^7) | 127(2^7-1) |
short | Short | -32768(-2^15) | 32767(2^15-1) |
int | Integer | -2,147,483,648(-2^31) | 2,147,483,647(2^31-1) |
long | Long | ||
float | Float | ||
double | Double | ||
boolean | Boolean | ||
char | Character |
1、传递方式不同
基本数据类型(原始数据类型)是值传递,封装类型是引用传递
2、封装类型有方法和属性
可以利用这些方法和属性来处理数据,例如Integer.parseInt(strings);基本数据类型都是final修饰的,不能被继承和扩展新的类、方法
3、默认值不同
如int i;默认值为0,而Integer j;默认值为null,因为此时j为对象,对象默认值为null;
4、存储位置不同
定义的基本数据类型的变量
和对象的引用变量(地址)
存储在栈中,而实际对应的对象(value)
是存储在堆中
JDK5.0开始可以自动封包了,基本数据类型可以自动封装成封装类。
比如集合List,往里添加对象Object,需要将数字封装成封装类型对象,再存到List中
在JDK5.0 以后可以自动封包,直接写
特别注意:
JVM中一个字节以下的整型数据会在JVM启动的时候加载进内存,除非用new Integer()显式的创建对象,否则都是同一个对象
对于==,一般比较引用地址,有基本数据类型的都是比较值,例如Integer xx= int xxx