public class Demo04 {
public static void main(String[] args) {
//数据类型的自动转换 从低 》 高 double类型比int高
int a = 128;
double b = a;
System.out.println(a);
System.out.println(b);
System.out.println("===================================");
//强制转换 从高 》 低
int c = 128;
byte d = (byte) c; //d输出-128、原因是数据溢出,(byte最多输出为127)
//这说明类型转换要注意 数据溢出问题
System.out.println(c);
System.out.println(d);
System.out.println("===================================");
int e = 127;
byte f = (byte) e;
//这次e,f值都是127,说明一切正常没有数据溢出
System.out.println(e);
System.out.println(f);
System.out.println("===================================");
char g = 97; //a对应的ASCII值是97,这说明字符的本质是数字,有种万物归数学的感觉了
int h = g+1; //char比int容量低,这属于自动转换
System.out.println(g);
System.out.println(h);
System.out.println("===================================");
float i = 3.14F; //3.14在转换后变为3,这说明转换要注意精度问题
byte j = (byte) i;
System.out.println(i);
System.out.println(j);
System.out.println("===================================");
int years = 20; //输出-147......说明数据溢出了,200亿超过了int的容量上限
int money = 10_0000_0000;
int total1 = years * money;
System.out.println(total1);
System.out.println("===================================");
long total2 = years * money;
System.out.println(total2); //total2的值依旧是-147...说明数据溢出在long之前已经发生
System.out.println("===================================");
//解决方法如下
long total3 = years * ((long)money);
System.out.println(total3);
}
}