由于JAVA是强类型语言,进行某些运算时要类型转化
低--------------------------------------------------------------->高
byte,short,char——>int——>long——>fioat——>double
int i=128; byte b=(byte)i;//将i从int转化到byte,但要避免内存溢出 //int转到byte,高到低,不需要转化 int i=128; double b=i;//不需要转化,i从int到double,低到高,不需要转化
!注意点
-
不能对布尔值转化
-
不能把对象转化为不相干的类型
-
从高转化到低要强制转化
-
转化存在内存溢出或精度问题
System.out.println((int)23.7);//输出23
System.out.println((int)-45.89F);//输出45
char c='a';
int d=c+1;
System.out.println(d);//输出98
System.out.println(char(d));//输出b
操作数比较大可能有溢出问题
public class 文件名{
public static void main(string[] ards){
int money=10_0000_0000;
int years=20;
int total=money*years;
long total2=money*years;
long total3=money*((long)years);
System.out.println(total);//将出现-1474836480;已溢出,int 类型最大值小于20000000000
System.out.println(total2);//将出现-1474836480;已溢出,因为在计算时仍然是int与int之间的计算,得出的仍然是int类型
System.out.println(total3);//出现20000000000;计算时已经转化为long
}
}