数据类型转换
自动类型转换
- 程序运行时,不通类型的数据需要先转换为同一类型,然后再进行运算。
- 自动类型转换的规则是由低到高自动转换,byte>short>int>long>float>double,浮点数类型的优先级最高。
- boolean不参与类型转化
强制类型转换
-
强制类型转换可以实现高内存的数据类型转化为低内存的数据类型
-
用法:(数据类型)变量名
-
强制转化需要注意数据类型的容量,防止内存溢出的情况。
int a = 300;
//byte b = a;报错,未执行强制转化,赋值给变量b的数据超出了byte的表数范围
byte b =(byte)a;
//程序运行成功,但会出现内存溢出的问题,因为变量a的值超过了byte的表数范围,它输出的结果是一个完全不相干的值
- 不能把对象类型转换为不相干的类型
- 在把浮点数类型强制转换为整数类型的时候会存在精度问题,
double a = 3.464;
system.out.println((int)a);
//这里转换的结果会取整数部分舍弃小数
其他问题
int money = 100000000;
int years = 20;
int total_1 = money*years;
long total_2 = money*years;
long total_3 = (long)money*years;
System.out.println(total_1);
System.out.println(total_2);
如上代码:total输出后的结果是个错误的值,因为:
- total_1,计算出的结果超出了int可以表示的范围,
- total_2,因为两个操作数都是int类型,所以输出的结果默认是int类型,首先计算money*years的值然后把错误的值转换为long类型,在转换为Long类型之前就已经出现精度问题了。
- 正确的表达式为total_3,首先把变量money的值转换为Long类型,然后进行计算并把值赋给变量total_3,随后成功输出200亿
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!