数据类型转换

自动类型转换

  1. 程序运行时,不通类型的数据需要先转换为同一类型,然后再进行运算。
  2. 自动类型转换的规则是由低到高自动转换,byte>short>int>long>float>double,浮点数类型的优先级最高。
  3. boolean不参与类型转化

强制类型转换

  1. 强制类型转换可以实现高内存的数据类型转化为低内存的数据类型

  2. 用法:(数据类型)变量名

  3. 强制转化需要注意数据类型的容量,防止内存溢出的情况。

int a = 300;
//byte b = a;报错,未执行强制转化,赋值给变量b的数据超出了byte的表数范围
byte b =(byte)a;
//程序运行成功,但会出现内存溢出的问题,因为变量a的值超过了byte的表数范围,它输出的结果是一个完全不相干的值
  1. 不能把对象类型转换为不相干的类型
  2. 在把浮点数类型强制转换为整数类型的时候会存在精度问题,
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输出后的结果是个错误的值,因为:

  1. total_1,计算出的结果超出了int可以表示的范围,
  2. total_2,因为两个操作数都是int类型,所以输出的结果默认是int类型,首先计算money*years的值然后把错误的值转换为long类型,在转换为Long类型之前就已经出现精度问题了。
  3. 正确的表达式为total_3,首先把变量money的值转换为Long类型,然后进行计算并把值赋给变量total_3,随后成功输出200亿
posted @   萧何i  阅读(44)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示