类型转换:
/*
+: 加法
类型转换:
注意事项:当且仅当大类型可以转换为小类型数据时, 才进行转换否则会造成精度损失
优先级 byte < short < int
char < int
int < long < float < double
隐式类型转换 也叫(自动)类型转换: 小类型转换大类型, 自动提升为大类型, 运算结果是大类型 ---> 小到大的关系
数据类型范围从小到大如下:
byte -> short -> char-> int(默认整形) -> long -> float -> double(默认浮点数)
boolean类型不参与比较, 它的值只有true和false两个,
强制类型转换 也叫(手动)类型转换: 手动将大类型转换为小类型, 运算结果为小类型 ---> 大到小的关系
转换格式: 小类型 变量名 = (小类型)大类型数据;
目标类型 变量名 = (目标类型)要转换的值
注意: 强制类型转换在使用的时候可能会出现丢失精度的问题
*/
public class ConversionDemo {
public static void main(String[] args) {
// 定义两个变量
int a = 10;
int b = 20;
System.out.println(a+b);
// 我可以把a+b的结果进行输出, 说明这样的就散是没有问题的 那么我可以把结果接受一下
int c = a + b;
System.out.println(c);
System.out.println("------------------------------------------");
// 定义一个int类型的数据 和 一个byte类型的数据
int aa = 10;
byte bb = 20;
System.out.println(aa + bb); // 自动升级
// byte cc = aa + bb; // 为什么 会报错? byte类型和int类型计算, 会先将byte类型提升为int类型计算,结果也是int类型
int cc = aa + bb;
System.out.println(cc);
System.out.println("------------------------------------------");
// 思考:我就想用byte类型变量接受aa+bb 怎么办? 可以通过强制类型转换实现
// 目标类型 变量名 = (目标类型)(要转换的值)
byte dd = (byte)(aa + bb); // aa+bb的结果是一个int类型, 然后将其强制转换类型为byte类型
System.out.println(dd);
System.out.println("------------------------------------------");
double d1 = 3.14;
int a1 = (int)(d1); // 意思是: 将double类型的结果强制类型转换为整数
System.out.println(a1);
}
}
总结:
类型转换:
1. 类型转换的分类:
自动(隐式)类型的转换;
小类型转大类型, 自动提升为大类型, 运算结果是大类型
强制(显式)类型转换;
手动将大类型转换为小类型, 运算结果为小类型
小类型 变量名 = (小类型)大类型数据;
2. 注意:
当且仅当大类型的数据可以转换为小类型时, 才进行转换, 否则会造成精度丢失.