问答详情
源自:2-10 Java中的强制类型转换

强制类型转换

public static void main(String[] args){        

      short a = 2;        

      short b = 3;        

       short c = a+b;//这句为什么显示的是错误语句??? }

提问者:慕少4931880 2016-12-21 21:12

个回答

  • 慕先生8753438
    2017-01-02 18:38:42
    已采纳

    public static void main(String[] args){        

          short a = 2;        

          short b = 3;        

           short c = a+b;//此句报错—— 错误: 不兼容的类型: 从int转换到short可能会有损失

                                 /**报错原因:a,b虽已被赋值为short类型(16位),但是(a+b)的计算结果并没有被赋值为 short类型。注意:+的优先级高于=。所以先算出(a+b)的值为整数5(它会先被Java自动隐式转换为int类型32位),此时再将5赋值给c(short类型16位),Java就不能自动隐式转换了,想要转换的话得用强制缩小转换,即short c =(short)(a+b);

        */
                     }

    正确的代码如下:

    public class Testis{
     public static void main(String[] args){
      short a=2;
      short b=3;
     /*
     *(a+b)的计算结果会被java自动隐式转换成int类型
     *必须采用强制缩小转换才能将计算结果赋值给short类型的c
     */
      short c=(short)(a+b);
      System.out.println(c);
     }
    }

    希望你可以采纳我的答案哦^-^



  • 慕桂英4167182
    2016-12-21 21:25:18

    两个short型的数相加会自动转成int型。精度小于int的会自动转化成Int

  • liujianfeng
    2016-12-21 21:20:51

    不兼容的类型:从int转换到short可能会有损失;前面两个存在隐式转换;