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

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条)

报告相同问题?

悬赏问题

  • ¥15 多址通信方式的抗噪声性能和系统容量对比
  • ¥15 winform的chart曲线生成时有凸起
  • ¥15 msix packaging tool打包问题
  • ¥15 finalshell节点的搭建代码和那个端口代码教程
  • ¥15 Centos / PETSc / PETGEM
  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据
  • ¥20 软件测试决策法疑问求解答