类型转化:
关于基本数据类型的相互转换,转换规则:
1.八种数据类型当中除了布尔型之外剩下的都可以相互转换。
2.小容量向大容量转换,成为自动类型转换,容量从大到小排序。
byte<short=char<int<long<float<double
注:任何浮点型数据不管占用多少字节,都比整数型容量大。
char和short可表示的种类数量相同,但是char可以取更大的正整数。
3.char c='a';
char c=97;
效果相同。
4.大容量转换成小容量,叫做强制类型转换,需要加强制类型转换符,程序才能编译通过,但是在运行阶段可能会损失精度,所以谨慎使用。
5.当整数字面值没有超出byte,short,char的取值范围,可以直接赋值给byte,short,char类型的变量。
6.byte,short,char混合运算的时候,各自先转换成int类型在做运算。
7.多种数据类型混和运算,先转换成容量最大的那种类型再运算。
public class DataTypeTest04 { public static void main(String[] args){ byte a=20; //byte a=1000; //变量不能重名,变量超出范围。 short b=1000; //默认值为int,范围没超过。 int c=1000; long d=c; //小容量转换成大容量,直接转换。 int e=(int)d; //强制转换 int f=10/3; //10和3都是int,结果为int正确。 double g=10/3; //结果为3.0 g=10.0/3; //结果为3.3333333 long h=10; //自动类型转换 //int i=g/3; //错误,多个数据在运算过程会转换成容量最大的类型 int i=(int)h/3; //byte j=(byte)(int)k/3; //编译报错,h转成byte,编译器只检查语法。 byte j=(byte)(int)(k/3); //short l=10; //byte m=5; //short n=l + m; //编译报错,short和byte运算会先转换成int再进行计算结果 为int,int赋值给short会出现精度丢失。 //short n=(short)(l + m); char o='a'; System.out.println(o); //结果为a System.out.println((byte)o); //结果为97 } }