曲健磊的个人博客 2016-08-01 08:03 采纳率: 83.3%
浏览 1413
已采纳

java变量中的自动类型转换

class Demo1
{
public static void main(String[] args)
{

        byte b = 17;
        byte x = 21;
        byte m =x  +b;
        System.out.println("x="+m);
}

}
图片说明
为什么会报错?
而:
class Demo2
{
public static void main(String[] args)
{

        int b = 17;
        int x = 21;
        int m =x  +b;
        System.out.println("x="+m); 
}

}
却没错.
为什么Demo1里面的x和b明明都是byte类型却会报错,Demo2里面的int类型之间进行运算却没错,求大神解答

  • 写回答

6条回答 默认 最新

  • lixiang901112 2016-08-01 08:47
    关注

    下面是JVM指令集截图。
    图片说明
    如图片提示,加运算(add)只有 int long float double 这4个数字类型支持的。
    所以比int少的加运算自动换成int的加运算,结果也是int

    还有 自动类型转换是比自己大的类型才可以。转到比自己少的类型只能explicitly。 所以前者就报错了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?