public class demo2 {
public static void main(String[] args) {
//低------------------------------------->高
//byte,short,char->int->long->float->double
int i = 128;
byte b = (byte)i;//byte不能直接定义int,需要加byte转换。
double d = i;//自动转换
//强制转换 (类型)变量名 高-->低
//自动转换 低-->高
System.out.println(i);
System.out.println(b);//无法输入128是因为byte最大为127,128超过了内存上限,导致内存溢出
System.out.println(d);
System.out.println((int)11.1);//转换为11,精度丢失
System.out.println((int)22.2f);//转换为22,精度丢失
int money = 1_000_000_000;//JDK7特性数字之间可以用下划线分割
int year = 20;
int total = money*year;
System.out.println(total);//-1474836480,计算的时候溢出了
long total1 = money*year;
System.out.println(total1);//-1474836480,默认是int,转换之前已经存在问题了
long total3 = money*(long)year;
System.out.println(total3);//20000000000,计算过程中提升了等级会提升所有,所以得出正确答案
/*
1.不能对布尔值进行转换
2.不能把对象类型转换为不相干的类型
3.在把高容量转换为低容量的时候,强制转换,反之没有影响
4.转换的时候可能存在内存溢出,或者精度问题(在浮点数是遇到)!
*/
}
}
原文:https://www.cnblogs.com/JoeyZhu/p/14458267.html