一、基本数据类型
基本数据类型,我们都知道有4类8种,数值型有byte、short、int、long,字符型char,布尔型true、false,浮点数有float、double。在存储空间中,1一个字节8位,然后数值型的4种数据类型分别占用存储空间1、2、4、8个字节;boolean布尔型true、false均占用1个字节,字符型char占用2个字节,浮点数float、double分别占用4、8个字节。口诀简记为 “1 2 4 8 ”。相比大家都知道进制的换算,也有一个口诀方法即8421法,这个在这里不赘述。
二、类型转换
数据类型转换有2种方式,分别是自动类型转换(隐形转换)、强制类型转换。话不多说,直接看下面例子。
1、自动类型转换
public class DataChange {
public static void main(String[] args) {
//自动类型转换
byte a = 10;
int b = a;
System.out.println(a);
System.out.println(b);
}
}
运行结果如下:
可以看出,2个结果相同,byte类型的变量a,赋值给int类型的变量b,由范围小的转换为范围大的,会自动转换,且不会丢失精度。
2、强制类型转换
转换前:
public class DateChange2 {
public static void main(String[] args) {
//强制类型型转换
int a = 10;
byte b = a;//这里已经报错,编译不会通过,需要进行强制类型转换
System.out.println(a);
System.out.println(b);
}
}
转换后:
public class DateChange2 {
public static void main(String[] args) {
//强制类型型转换
int a = 10;
byte b = (byte)a; //强制类型转换,使用格式为(要转换后的类型)变量
System.out.println(a);
System.out.println(b);
}
}
运行结果如下:
基本数据类型转换时,当范围大的要转换为范围小的类型时,要使用强制类型转换,转换格式为: (dataType)variable
dataType:表示要转换后的数据类型
variable: 表示要转换的变量
3、当不同数据类型计算时,要进行数据转换,再举例如下:
public class DataChange3 {
public static void main(String[] args) {
byte c = 10;
int d = 20;
/*这里为什么要进行数据类型转换呢?那是因为不同数据类型计算时,都要先统一转换为范围大的数据类型,然后再计算。
* 所以这里c和d类型不同,c先自动转换为int类型,然后与d相加,得到结果30,而这个30是int类型,要把int类型的30赋值给
* byte类型的e,2个类型又不同,又需要先把30转换为byte类型,这是范围大的转换为范围小的,要使用强制类型转换
*/
byte e = (byte) (c + d);
System.out.println(e);
}
}
运行结果为:
4、注意事项:
1)、在进行算术运算操作的时候,必须要求数据类型一致,否则无法操作
2)、在运算过程中,如果两个值得类型不一致,会自动将小的类型转换为大的类型
3)、在运算过程中,可以手动强制转换,将大的类型转换为小的类型
4)、强制转换,会发生精度损失,结果可能不准确