为了账号安全,请及时绑定邮箱和手机立即绑定

强制类型转换

public static void main(String[] args){        

      short a = 2;        

      short b = 3;        

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

正在回答

3 回答

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);
 }
}

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



0 回复 有任何疑惑可以回复我~
#1

慕少4931880 提问者

非常感谢!
2017-01-02 回复 有任何疑惑可以回复我~

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

1 回复 有任何疑惑可以回复我~
#1

慕少4931880 提问者

byte 也是被。 所用的储存空间就是32位被
2016-12-21 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~
#1

慕少4931880 提问者

a,b的类型已经赋予为short.
2016-12-21 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第一季(IDEA工具)升级版
  • 参与学习       1162913    人
  • 解答问题       17550    个

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

进入课程

强制类型转换

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信