类型转化:
关于基本数据类型的相互转换,转换规则:
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
}
}