• 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类型
        若想要拼接的时候进行计算,则需要()来提升优先级

  • 相关阅读:
    关于global和$GLOBALS[]的一些实践
    java环境配置的新手教程
    echart图表 resize()方法使用
    使用git上传下载项目
    windows 系统新建 vue 项目的坑
    Java版求1000以内的完全数
    Java版经典兔子繁殖迭代问题——斐波那契(Fibonacci)数列
    Java版冒泡排序和选择排序
    AngularJS 动画总结
    Mac下sublime text 的“package control”安装
  • 原文地址:https://www.cnblogs.com/Lzzycola/p/13336257.html
Copyright © 2020-2023  润新知