讲义|数据转换(自动转换+强制转换)

/*
自动转换
1.显式:代码不需要处理,直接完成转换
规则:数据范围从小到大
*/
public class demo05{
public static void main(String[] args){
System.out.println(30); //直接输出一个整数,默认是Int类型
System.out.println(3.12); //直接输出一个小数,默认是double类型
long nume1=100; //整数之间的数据转换
//(1)左边是long类型,右边默认是int类型
//(2)等号赋值,右边赋值给左边
//(3)int——>long ,满足左大右小的数据范围
//(4)这一行代码发生了自动转换
System .out.println(nume1); //100
double nume2=3.14159267F; //浮点数之间的数据转换
//(1)左边是double,右边是float;
//(2)从double->float; 满足左大右小的数据范围,也发生了自动类型转换
System.out.println(nume2);
float nume3 =30L;
//(1)从long->float,范围float大于long,满足左大右小的数据范围
//(2)这一行代码发生了自动转换
System.out.println(nume3);
}
}
讲义|数据转换(自动转换+强制转换)
文章图片


【讲义|数据转换(自动转换+强制转换)】
/*强制转换
1.特点:代码需要特殊格式的处理,不能自动完成
2.格式:范围小的类型+范围小的变量名=(范围小的类型)+原本范围大的数据
注意事项:
1强制转换一般不推荐使用,因为可能会出现数据溢出,精度丢失。
2.byte/short/char这三种类型可以进行数学运算
3.byte/short/char这三种类型在进行运算的时候,都会被首先提成为int类型,然后在计算
4.boolen类型不能发生任何数据类型的转换
*/
public class demo06{
public static void main(String[] args){
//左边是int类型,右边是long
//long->int,不是从小到大,不能完后曾自动转换
//格式;范围小的数据类型+范围小的变量名=(范围小的数据类型)+原本范围大的数据
int nume1=(int)100L;
System.out.println(nume1);
/*
//long->int(强制转换)
int nume2=6000000000;
System.out.println(nume2); //1705032704溢出
*/
讲义|数据转换(自动转换+强制转换)
文章图片

讲义|数据转换(自动转换+强制转换)
文章图片


//double->int (强制转换)
int nume2=(int)3.99;
System.out.println(nume2); //3(这里并不是四舍五入,而是舍掉小数位)精度丢失
讲义|数据转换(自动转换+强制转换)
文章图片

char nuem3='A'; //这是一个字符变量'A'
System.out.println(nume3+1); //66也就是大写字母A被当成了65来进行处理
//计算机的底层会用一个数字(二进制)来代表字符‘A’,也就是65
//一旦char进行了数学运算,那么字符会按照一定的规则被翻译成一个数字

/*
byte nume4=40; //右侧的数值大小不能超过左侧的数值范围
byte nume5=50;
byte result1=nume4+nume5; //(都会被首先提成为int类型)int+int->int
System.out.println(result1);
*/
/*
这里会报错
*/
//正确的写法如下:
byte nume4=40; //右侧的数值大小不能超过左侧的数值范围
byte nume5=50;
int result1=nume4+nume5;
//byte+bute->int+int->int
System.out.println(result1); //90
short nume6=40;
//byte+short->int+int->int
//int 强制转换为short
//必须保证逻辑上的真是大小本来就没有超过short范围i,不然会出现数据溢出
//最小数据类型+最小数据变量=(最小数据类型)+(原来范围大的数据)
shiort result2=(short)(nume5+nume6); //90
}
}
讲义|数据转换(自动转换+强制转换)
文章图片





    推荐阅读