黑马程序员技术交流社区

标题: 这个为什么错了? [打印本页]

作者: Hellow_word    时间: 2016-6-6 19:03
标题: 这个为什么错了?
short s1 = 1; s1 = s1 + 1;有什么错?
作者: why910107    时间: 2016-6-6 19:07
1是int类型的    short和int类型进行运算是会自动提升为int类型     int取值范围比short大  结果会从int降为short   这时需要强制转换   你去看看笔记上的强制转换概念
作者: wzl100520    时间: 2016-6-6 19:20
  1. public static void main(String[] args) {
  2.                 //short 大转小需要向下强转
  3.                 short s1 = 1;
  4.                 s1 =  (short)(s1 +1);//因为默认的为int所以s1+1自动提升为int。int转short需强转
  5.                 //int  小转大  是自动提升
  6.                 int i=s1+s1;//short转int自动提升
  7.         }
复制代码
需要向下强转
作者: Hellow_word    时间: 2016-6-7 16:47
wzl100520 发表于 2016-6-6 19:20
需要向下强转

原来如此 谢了
作者: Hellow_word    时间: 2016-6-7 16:51
why910107 发表于 2016-6-6 19:07
1是int类型的    short和int类型进行运算是会自动提升为int类型     int取值范围比short大  结果会从int降 ...

原来如此 谢了
作者: zhangquan    时间: 2016-6-7 21:29
损失精度,short与 int 计算自动提升为 int,然后将int 值赋值给 short ,大的赋值给小的,损失精度




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2