Java语言提供了八种原始的数据类型:
byte(1bit)、short(2bit)、int(4bit)、long(8bit)、double(8bit)、char(2)、Boolean(1)。
此外,Java语言还提供了对这些原始数据类型的封装类:
character、Boolean、Byte、Short、Interger、Long、Float、Double。
除了以上八种基本数据类型外,在Java语言中,还存在另一种基本类型void,它也有对应的封装类java.lang.void。
封装类型和原始类型有许多不同点:
- 原始数据类型在传递参数时都是按值传递,而封装类型都是按引用传递的。
- 当封装类型和原始类型用作某个类的实例数据时,它们所指的默认值不同。对象引用实例变量的默认值时null,而原始类型实例变量的默认值与它们的类型有关(例如int默认初始化为0).
public class Type {
String s;
int i;
float f;
public static void main(String[] args) {
Type t = new Type();
System.out.println(t.s == null);
System.out.println(t.i);
System.out.println(t.f);
}
}
程序运行结果:
true
0
0.0
类型转换的规则
类型自动转换
在Java语言中,当参与运算的两个变量的数据类型不同时,就需要进行隐式的数据类型转换,转换规则为:从低精度向高精度转换。即优先级满足byte<short<char<int<long<float<double,boolean类型不参与转换
。运算时,short类型能够自动转为int类型,int类型能够自动转换为float类型等。反之,则需要通过强制类型转换实现。
强制类型转换
当从高级数据类型转换为低级数据类型时,就需要进行强制类型转换。
在强制类型转换时,可能会损失精度。