数据结构中的定义是一组性质相同的值的集合以及定义在这个值集合上的一组操作的总称。
简单理解 : Java对数据进行了分类,存在不同的类型。
1.Java中数据类型的分类
将Java数据类型进行简单的分类,用图来表示:
在Java1.1中新增了两个数据类型,用于高精度计算的:BigInteger(支持任意精度整数)和BigDecimal(支持任意精度的小数)。
为什么需要数据分类:不同的数据类型占用的存储空间不一样,在面临海量数据计算的时候,可以更好的节约计算机内存空间。
2.基本数据类型的大小及范围
类型 | 大小(Bit/Byte) | 范围 | 默认值 |
---|---|---|---|
byte | 1 | -128~127 | 0 |
short | 2 | -2^15~ 2^15-1 | 0 |
int | 4 | -2^31~ 2^31-1 | 0 |
long | 8 | -2^63~ 2^63-1 | 0 |
boolean | 1 | true或false | false |
char | 2 | 可指定、可动态分配 | \u0000(空) |
float | 4 | -2^128~ 2^128 | 0.0 |
double | 8 | -2^1024~ 2^1024 | 0.0 |
默认值:当未定义一个数据类型的值的时候,在计算时系统为为它分配一个默认的值。
long赋值时,因为整数默认是int类型,要转换为long类型的值,后面加上l或L。
float赋值时,因为整数默认是double类型,要转换为float类型的值,后面加上l或L,或者在值的最左边加上(float)。
3.Java数据类型转换
在Java中,boolean类型与所有其他7种类型都不能进行转换。
如下7种数据类型,它们之间都可以进行转换,但是可能会存在精度损失或者其他一些变化:
byte --> short ,char --> int --> long --> float --> double
1.自动转换
long float double只要两个操作数中有一个是上面类型的,另一个就会被转换成相应类型,并且结果也是该类型:
int num = 1;
double a = 11.01;
double b = num + a;
System.out.println(c);
如果2个操作数(包括byte,short,char,int),都将会转换为int类型,并且结果也是int(自动向上转型)。
2.强制转换
int a1=123;
int a2=456;
float f1 = (float) ((a1+a2)*1.2);//容量大的类型转换为容量小的类型时,要加上强制转换符
需要注意的是:
1). 高转低会导致精度丢失,不同类型的强制转换,可能会导致精度的下降。
2). 实际开发中:应该要知道被强制转换的数据,是在一个已知的范围,且超过范围值会报错。