类型转换
1. Byte—short----char-----int----long----float----double
*低--------------------------------------------------------------高*
注意:long位数高于float,但是小数优先于整数
2.强制转换:高位------低位
*类型)变量名*
int i=128;
byte b=(byte) i;//从高位到低位,加(bite强制转换)
System.out.println(i);
System.out.println(b);//内存溢出
3.自动转换:低位-------高位
byte a=126;
int c= a;//从低位到高位,直接自动转换
System.out.println(a);
System.out.println(c);
4.不能对布尔值进行转换
byte a1=126;
boolean a2= a1;不能对boolean值进行转换
5.转换过程中可能会存在内存溢出或者精度问题
在操作较大的数值时,注意溢出问题(JDK新特性,数字之间可以用_分开)
int i=128;
byte b=(byte) i;//从高位到低位,加(bite强制转换)
System.out.println(i);
System.out.println(b);//内存溢出
System.out.println((int)45.8);//精度问题
System.out.println((int) 15.98);//精度问题
int money=10_0000_0000;
int year=20;
int total=money*year;//输出-1474836480;计算的时候溢出了
long total2=money*year;//输出-1474836480;默认是int,在转换之前已经存在问题
long total3=(long) money*year;//输出之前,先把一个值转换成(long)类型。
System.out.println(total);
System.out.println(total2);
System.out.println(total3)
总结:
1.不能对布尔值进行转换。
2.不能把对象内型转换为不相干的类型。
3.在进行高位转低位的时候需要加入类型进行强制转换,如(int,bity,char等)
在进行低位转高位的时候,可以直接转换。
4.转换过程中可能会存在内存溢出或者精度问题。