;
由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换
byte,short,char->int->long->float->double
运算中,不同类型的数据先转化为同一类型,然后进行运算
public class demo{ public static void main(String[]args){ int a=128; byte b=(byte)a;//内存会溢出, 因为byte的范围是-128---127 System.out.println(a); System.out.priintln(b); } } 运行结果 128 -128 因为byte 是-128-127, 所以造成了内存溢出, 导致输入了-128
强制转换格式:(类型)变量名, 主要是从高-低
自动转换: 从低到高
注意点
-
不能对布尔值进行转换;
-
不能把对象类型转换为不相干类型;
-
把高容量转换成低容量要强制转换;
-
转换时可能存在内存溢出或者精度问题;
System.out.println((int)23.8); System.out.println((int)-45.89f) 运行结果 23 -45
char c='a'; int d=c+1; sout(d); sout((char)d); 运行结果: 98 b
操作数比较大的时候, 注意溢出问题
int money=10_0000_0000;
sout(money);
运行结果1000000000 不带_, 这是jdk7的新特性
int money=10_0000_0000; int years=15; int total=money*years; long total=money*(long)year; sout(tota); sout(total); 运行结果:2115098112 1500000000 //证明溢出了, 所以要在运行前对years进行类型转换(long)years, 整体类型也要定义为long;