美文网首页Java 小细节
Java 小类型与大类型

Java 小类型与大类型

作者: 谢随安 | 来源:发表于2017-09-27 10:50 被阅读6次
    小类型向大类型(隐式类型转换)

    小类型向大类型的转换JVM会自动完成,不需要编写额外的代码。如下代码:

    byte b1 = 3;
    b1 = b1 +3
    

    这样会在b1 = b1 +b2处报错,原因在于Java默认的证书类型的是 int 类型,b1+b2返回的结果会通过隐式类型转换将结果变成int类型,又由于b1是 byte类型的变量,因此赋值会报错。

    如果这样写代码:

    int b1 = 3;
    byte b2 = 3;
    b1 = b1 +b2;
    

    因为JVM会自动完成隐式类型转换,所以 b1+b2 的结果会变成 int 类型,什么事都没有、

    大类型向小类型

    还是上面的例子:

    byte b1 = 3;
    b1 = b1 +3
    

    如果想要将结果类型保存为 byte类型,则需要强制类型转换。将代码改成如下形式:

    byte b1 = 3;
    b1 = (byte)b1 +3
    

    报错便消失了。

    需要注意的是大类型转换小类型时,源数据的数据位会变成符号位。

    int i=257
    byte b = (byte)i
    

    因为257 = 100000001
    经过强制类型转换,超出长度的位数会被丢弃,剩下的数据位成为了符号位
    结果 = 00000001 ,即1

    结论:
    • 小类型向大类型的转换JVM会自动完成隐式类型转换,不需要编写额外的代码。
    • 大类型向小类型的转换需要编写额外代码进行强制类型转换。

    相关文章

      网友评论

        本文标题:Java 小类型与大类型

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