类型转换
强制类型转换和自动类型转换
强制类型转换
//强制类型转换 (类型)变量名 高----》低
int i=128;
byte b=(byte)i; //内存溢出
System.out.println(i); //128
System.out.println(b); //-128
输出结果图:
自动类型转换
//自动转换 低-----》高
int i1=128;
double b1=i1; //内存溢出
System.out.println(i1); //128
System.out.println(b1); //128.0
输出结果图:
注意点
/*
注意点:1.不能对布尔值进行转换
2.不能把对象类型转换为不相干的类型
3.把高容量转化为低容量时,强制转换
4.转换的时候可能存在内存溢出或精度问题!
*/
System.out.println((int)45.7); //45
System.out.println((int)-37.89f); //-37
System.out.println("--------------------------------------------------");
char c='a';
int d=c+1;
System.out.println(d); //98
System.out.println((char)d); //b
输出结果:
溢出问题
//操作比较大的数时,注意溢出问题
//JDK7新特性,数字之间可以用下滑线分割
int money=10_0000_0000;
int years=20;
int total=money*years;
System.out.println(total); //-1474836480 计算时溢出了
long total1=money*years; //等号右边的默认是int,已经溢出了,再转换没用
System.out.println(total1); //-1474836480
long total2=money*(long)years; //先把一个数转换为long long等级高于int
System.out.println(total2); //20000000000