Java语言基础(类型的转换与提升)

一 数据类型的转换
  1.自动类型转换
    i.需要操作数据的类型兼容,如都是都是整型,都是浮点型,或者如整型与字符型
    ii.需要目标类型的范围大于源类型,如byte b = 1; int a = b; 这时的b虽然是byte型,但赋值时自动转换成了int型
  2.强制类型转换
    i.需要操作数据的类型兼容,与自动类型转换一致
    ii.需要目标类型的范围小于源类型,如int a = 128;byte b = (byte) a; 此时的a被语法强制转换成了byte类型然后赋值给了b
    **如果源类型的数据值超出了目标类型的范围,则会出现数据损失,具体的数据损失由二进制方法计算,如一个byte位有8个bit
    而一个int 类型的数据则有32个bit ,如果将int类型强制转换成byte类型则会有32-8=24个bit的数据损失,也就是高位的数据被截断
    转换之后只留下目标类型的bit数位;
3.使用方法进行数据类型转换
   如String.valueOf()
   但其返回值必须与目标类型的数据类型相同;

二 数据类型的提升
  法则如下:
    i. 如果操作数中有一个为double,则计算结果自动提升为double类型;
    ii.如果操作数中没有double,有一个为float,则计算结果自动提升为float类型
    iii.如果操作数中没有float,有一个为long,计算结果提升为long类型
    iv.如果操作数中没有long,有一个为int,则计算结果自动提升为int类型
    v.如果操作数均为short或者byte,则计算结果自动提升为int类型
    特殊:任何数据与String相加,jvm则会认为是数据与String拼接,自动提升为String类型
    若想要拼接的时候进行计算,则需要()来提升优先级

posted @   Lzzycola  阅读(130)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
点击右上角即可分享
微信分享提示