数据类型自动转换
long num1 = 100L;
System.out.println(num1);//100
- 当数据类型不一样时,会发生数据类型转换
- 代码不需要处理,自动完成,数据范围从小到大
long num2 =100;
System.out.println(num2);//左边是long类型右边是int类型
//int-->long,即发生转换
double num3 = 2.5F;//2.5
//float-->double,从小到大
System.out.println(num3);
float num4 = 30L;
System.out.println(num4);//30.0
//long-->float
数据类型强制转换
代码需要特殊格式处理,不能自动完成
格式:【范围小的类型 范围小的变量名=(范围小的类型)范围大的数据】
注意事项:
- 不推荐使用,会发生数据精度丢失
- byte/short/char这三种类型可以发生数字运算
- boolean不能发生数据类型转换
// int num5 = 100L;会报错
// System.out.println(num5);
int num6 = (int)100L;//100L为long类型
System.out.println(num6);//long-->int
//int最高表示21亿
int num7 = (int)2200000000L;
System.out.println(num7);//-2094967296 数据溢出
//double-->int
int num8 = (int)3.999;
System.out.println(num8);//小数位会被舍弃掉
char zifu1 ='A';
System.out.println(zifu1+1);//66
byte num9 = 40;
byte num10 =50;
//byte+byte ————>int+int=int
int result1 = num9+num10;
System.out.println(result1);//90
short num11 = 60;
//byte+short-->int+int-->int
short result2 = (short)(num9+num11);
System.out.println(result2);//100
- 计算机保存的数据都是二进制
char zifu2 = '1';
System.out.println(zifu2+0);//49
char zifu4 = 'c';//ASCII c=99
//左侧是char,右侧是int,char->int
//自动转换
int num12= zifu4;
System.out.println(num12);//99