强制类型转换

来源:2-10 Java中的强制类型转换

慕少4931880

2016-12-21 21:12

public static void main(String[] args){        

      short a = 2;        

      short b = 3;        

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

写回答 关注

3回答

  • 慕先生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);
     }
    }

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



    慕少4931...

    非常感谢!

    2017-01-02 18:49:27

    共 1 条回复 >

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

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

    慕少4931...

    byte 也是被。 所用的储存空间就是32位被

    2016-12-21 21:32:07

    共 1 条回复 >

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

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

    慕少4931...

    a,b的类型已经赋予为short.

    2016-12-21 21:28:23

    共 1 条回复 >

Java入门第一季(IDEA工具)升级版

0基础萌新入门第一课,从Java环境搭建、工具使用、基础语法开始

1165168 学习 · 17581 问题

查看课程

相似问题