低——————————————>高
byte,short,char--->int--->long--->float--->double
一. 强制转换 高——.>低
public class Demo03{
public static void main(String[] args){
int i = 128;
byte b = (byte)i;//内存溢出
//强制转换 (类型)变量名 高——.>低
system.out.println(b);
system.out.println(i);
}
}
二. 自动转换 低——>高
public class Demo03{
public static void main(String[] args){
int i=128;
double d=i;
system.out.println(d);
}
}
结论:
不能对布尔值进行转换
不能把对象类型转换为不相干类型
再把高容量转换到低容量时,强制转换
转换的时候可能存在内存溢出,或者精度问题
System.out.println((int)23.7);--->23 精度问题
system.out.println((int)-45.89);--->45 精度问题
char c=‘a‘;
int b=‘a‘+1;
system.out.println(b);--->98
system.out.println((char)b);--->b
//JDK7的新特性,数字之间可以用下划线分割,但不会输出
int money = 10_0000_0000;
//操作比较大的数的时候,注意溢出问题
int money = 10_0000_0000;
int year = 20;
int total = money*year;
system.out.println(total);---->1474836480()出现了溢出
如果 int total = money*((long)year);
system.out.println(total);--->2000000000 //先把一个数转换成long,解决溢出问题
原文:https://www.cnblogs.com/xjs-/p/13667029.html