数据类型的转换
java在进出赋值或者运算时,精度小的数据类型自动转换为精度大的数据类型,这个过程叫自动转换。
数据类型按精度大小排序如下:
char——int——long——float——double
byte——short——int——long——float——double
细节1:byte 、short、 char 他们三者可以计算,在计算时结果首先转换为int 类型;
byte s1 = 1
short a1 = 2
short s2 = s1 + a1 //编译时会报错,原因是s1+a1 的 结果为 int类型,而把 int类型 转换为 short类型 会报错
细节2:把具体数值赋值给byte时,先判断该数值是否在byte的范围内,再进行类型的判断,如果是就可以
如:byte a=20;// 20是一个具体数值,所以先考虑范围。而不是先考虑类型。
char c = a;//编译时会出现错误,原因是 byte 类型不能转换为 char 类型。
细节3:有多种类型的数据运算时,系统会先自动将所有数据转换成容量大的那种数据类型,然后再进行计算。
int a = 10;
float c = a + 1.1 //编译时会报错,原因是1.1是double类型,而float 类型的精度没有double 的高。
细节4:boolean不参与转换
细节5:自动提升原则:表达式结果的类型自动提升为操作数中最大的类型
byte s1 =10;
short s2 = 100;
int s3 = 50;
float s4 = 1;
double s5 = 12;
float a = s1+s1+s3+s4+s5; // 编译时会出现错误,原因是在这个五个数相加中,数据类型最大是double类型。
所以结果会为double类型,double类型的值赋给 float类型会报错。
double a = s1+s1+s3+s4+s5;
细节6:byte 、short、char 三者之间不会自动相互转换。
二、基本数据类型强制转换
注意相关细节:
1.进行的数据大小:从大到小,就需要使用到强制转换,
2.强制转换符号只针对与最近的操作数有效,往往会使用小括号提升优先级
int x = (int)10*3.5+6*1.5; //编译会出现错误,原因是最后的值double类型,double赋值给int类型会报错;
Int y =(int)(10*3.5+6*1.5); //编译可以进行。对后面的结果进行一个强制转换为int类型。
System.out println(y);
3.char 类型可以保存int的常量值,但不能保存int的变量值,需要进行强制转换
char c1 = 100;
int m = 100;
char c2 = m; //编译时会出现错误,上面的为100,所以m是一个int类型,int类型赋值给char,(高精度向低精度转换)需要进行强制转换,否则编译会出错误。
char c3 = (char)m;
System .out.println(c2);
4.byte和short类型咋进行运算时,当做int 类型处理。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性