美文网首页
Java基本类型之间的转换

Java基本类型之间的转换

作者: Ew0828 | 来源:发表于2018-10-27 11:58 被阅读0次

    一、基本数据类型长度

    byte:一个字节,8位,有符号

    short:两个字节,16为,有符号

    char:两个字节,16位,无符号

    int:4个字节,32位,有符号

    float:4个字节,32位,有符号

    long:8个字节,64位,有符号

    double:8个字节,64位,有符号

    boolean:比较特殊,1个字节,由于其值的特殊性,不能与任何基本类型进行转换

    二、向上类型转换(不考虑char类型,char类型后面一节单独说)

    何为向上?

    byte->short->int->long->float->double

    只要是要转换的类型等级比本身类型等级高,不需要强制类型转换,而且,内存中所占长度也会随之提升

    但是,整数转换为浮点数有可能会损失精度

    三、向下类型转换

    向下类型转换,均需要强制转换

    注意:在给基本类型赋初值的时候,整数默认是int类型,浮点数默认是double类型

    所以,

    float a = 5.0;   //编译器会报错,因为5.0默认是double类型,不经过强制转换不可以转换为float类型

    float a = (float)5.0;  //正确

    float a = 5.0f;  //正确,这时候的5.0是float类型

    但是,

    byte a = 6;   //这种写法不会报错,因为对于默认为int类型的数据,将其赋给比int类型等级低的类型k时(byte、char、short),JVM会自动判断该值是否超过了k类型的取值范围,如果超过了,则报错,如果没有超过,则将该int值隐式地强制转换为k类型并赋值。

    所以;

    char a = 5;  // 不会报错

    byte a = 1000;   // 报错,因为1000超过了byte所能存储的最大范围

    四、char的独特性

    虽然char类型内部存的也是数字(ASCII码),但是,有一点不同:byte、short、int、float、double都是有符号的变量类型,char是无符号的变量类型,所以,即使是byte向char类型转换(升级)、short向char类型转换(同级)均需要强制转换,因为有符号和无符号的区别。


    相关文章

      网友评论

          本文标题:Java基本类型之间的转换

          本文链接:https://www.haomeiwen.com/subject/yexdtqtx.html