JavaSE基础语法---基本数据类型转换

         上一期里我们提到了数据类型的分类:基本数据类型与引用数据类型。基本数据类型有数值型,字符型跟布尔型。本期,让我们来聊一聊基本数据类型的转换。

        在进行Java编程的过程中,我们经常会遇到数据之间的传递,这时候就有可能出现类型不一致的现象。在Java中,不同的数据类型是不可以进行运算的。这时候,就需要数据类型转换登场了。

        那么数据类型的转换究竟是怎么一回事呢?

        数据类型转换,顾名思义,就是把一个数据类型转换为另一个数据类型。比如我想要把一个long类型的b与int类型的a相加,而我们想要得到一个int类型的值。我们可以用:

    public static void main(String[] args) {
        int i=3;
        long j=4;
        i=(int)(i+j);
    }

来进行强制转换。

        数据类型转换可分为两大类:隐式类型转换和强制类型转换。(除了boolean型之外,其余7种基本数据类型均可自由转换)

        隐式类型转换(默认转换)

        即容量小的数据类型转换为容量大的数据类型,系统一般会将小类型自动转换为大类型,这时不需要我们做什么,数据类型按照从小到大的排序为:byte,short,char->int->long->float->double。byte short  char三者之间不能进行隐式转换。

        这时候你可能会有疑惑,float 4个字节为什么会比long的8个字节容量大呢???

        这是因为,浮点数在计算机中底层存储结构跟整数不一样。

        浮点数的表示借鉴了科学计数法,比如在十进制中666.66可以表示为6.6666*10^2。类似地,浮点型数据的二进制存储结构也可以被划分成:符号位 + 指数位 + 尾数位。即V=(-1)^s * M * 2^E其中 s=为符号位, M=底数,  E=幂(指数)。

具体想要了解可以参考这个网址:计算机是如何存储小数的https://www.jianshu.com/p/feebd5dd3ad5

      需要注意的是:

1.byte  short  char三者在进行运算时首先会转换成int类型,然后在进行运算。

2.多种类型的数据混合运算时,系统首先自动的将所有数据转换成容量最大的 那一 种数据类型,然后再进行计算。例如:

long m = 2 + 10L + 10.2F + 10.5

这种情况输出的结果是double类型

        强制类型转换(强制转换)

        容量大的数据类型转换为容量小的数据类型,必须加上强制转换符。但是这个操作可能会造成精度降低或溢出现象比如以下几个代码:

    public static void main(String[] args) {
        int a = 12;
        char b = (char)a;
        System.out.println(b);
    }

        这时,输出的b是0,这就是所谓的溢出。(说人话就是小容量装不下大数字)

    public static void main(String[] args) {
        float a = 10.5f;
        int b = (int)a;
        System.out.println(b);
    }

        这种情况是精度丢失,它输出的结果是10,而非10.5。

       

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值