优先级:demo4
低-------------------------------------高
byte,short,char -> int -> long ->float ->double
强制转换:由高到低
public class Demo4 {
public static void main(String[] args) {
int i=128;
double b = i;//内存溢出 byte -128~127
//强制转换 (类型)变量名 高->低
//自动转换 低->高
System.out.println(i);//128
System.out.println(b);//
/*
注意点:
1、不能对布尔值转换
2、不能把对象类型转换为不相干的类型
3、高容量转换到低容量的时候,强制转换
4、转换的时候可能存在其内存溢出,或者精度问题!
*/
System.out.println("===========");
System.out.println((int)23.7);//强制转换23
System.out.println((int)-45.89f);//强制转换-45
System.out.println("======================");
char c='a';
int d=c+1;
System.out.println(d);//98
System.out.println((char)d);//b (a后面b)
}
}
大的数值转换
public class Demo5 {
public static void main(String[] args) {
//操作比较大的数值时,注意一溢出问题
//JDK7新特性,熟自制件可以用下划线分割。
int money = 10_0000_0000;
int year = 20;
int total = money*year;
System.out.println(total);//-1474836480溢出
long total2 = money * year;//默认是int,转换之前已经溢出了
System.out.println(total2);//-1474836480溢出
long total3=money*((long)year);//先把一个数转换成long
System.out.println(total3);//20000000000
}
}