为什么要有数据类型的转换?
这是因为在一个项目中,不可能所有的数据都使用一样类型的变量,当你接收到的变量类型和需要使用的变量类型不同时,这时候就需要进行数据类型的转换。
数据转换顺序:
byte → short → int→ float → double → long
小变量类型转换成大变量类型
byte a = 10;
int b = a;
char c = 'a';
int d = c;
小字节的变量可以直接被大字节的变量进行接收。char类型的变量可以被int类型的变量接收,char变量的数据会对应编码表的十进制数据进行转换,然后再被int变量接收。
自动转换在表达式中的实际使用
byte a = 1;
int b = 5;
double c = 66.6;
double d = a + b + c;
当有不同类型的变量需要进行计算时,最终接收数据的变量一定要是表达式中最大的变量,否则将会报错。
当byte类型的变量出现在表达式里时,它会直接变成int类型的变量。因为byte作为最小字节的变量,在进行计算时有可能会出现结果超过byte字节取值范围的情况,为了防止出现这种情况导致结果出错,byte会在计算时直接进行改变。所以当只有byte进行计算时,也要使用int类型的变量来进行接收。
byte a = 10;
byte b = 10;
int c = a + b;
强制数据类型转换(大字节变量转小字节变量)
int a = 666;
byte b = (int)a;
当一个大字节变量类型强制转换成小字节变量类型时,数据结果会出现问题。如上图所示,int作为4个字节的变量,在内存中占32位。而byte只有一个字节占8位,所以byte会自动取int变量中的最后8位来进行转换。
而当一个小数类型的变量被转换成整数类型的变量时,它的小数会直接给去掉,会保留它的整数进行转换。(没有四舍五入,就算是99.99也只会保留99)