Primitive types |
Java语言中默认定义了8个原始数据类型,大致可以分为4类:
整型:包含byte、short、int、long
浮点型:float、double
布尔型:boolean
字符:char
这8个基本的数据类型如果在声明的时候没有初始化,编译器会赋予默认值,引用类型的对象(如String)默认值为null。但如果是局部变量(Local Variables,方法体内申明),编译器不会自动赋予初始值,会报编译错误。
Data Type | Default Value (for fields) |
---|---|
byte | 0 |
short | 0 |
int | 0 |
long | 0L |
float | 0.0f |
double | 0.0d |
char | ‘\u0000’ |
boolean | false |
String(or any object) | null |
Object wrapper classes |
虽然Java是面向对象语言,但是它在设计之初却保留了一些面向过程语言的特性,它的8个原始数据类型就是非面向对象的——没有属性、没有方法,它们不是类。使用它们确实能够进行简单、有效的常规数据处理,但是有时候我们需要像对象一样处理基本数据类型。因此Java为每种原始数据类型分别设计了对应的包装类(Wrapper Classes)。
Primitive type | Wrapper class |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
使用包装类有以下作用:
提供了一些实用方法,比如:基本类型之间相互转换
要求Object类型时无法使用基本数据类型,比如集合内不允许存放基本数据类型
Autoboxing&Unboxing |
自动装箱是指Java编译器将基本数据类型自动转换为相对应的包装类,比如int转换为Integer,反之是自动拆箱。JDK1.5之后才支持自动拆装箱,在此之前,都需要手动操作。
List<Integer> li = new ArrayList<>();
for (int i = 1; i < 50; i += 2)
li.add(i);
//i是int类型,编译器会自动装箱为Integer类,来完成li.add()
自动拆装箱让开发人员代码书写更简洁,更容易阅读。