A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

13 个回复

倒序浏览
本帖最后由 forrasiel 于 2016-4-13 19:07 编辑

我也不知道我说的对不对,今天刚好看视频看到这里:

1,一个{}中不能出现2个同名变量;
2,1是int类型,而你定义了s1是short类型,两个类型相加会出现精度丢失的情况,必须使用强制转换
  1.         short s1 = 1;
  2.         short s2 = (short) (s1 + 1);
  3.         System.out.println(s2);
复制代码
  1.         short s1 = 1;
  2.         int s2;
  3.         s2 = s1 + 1;
  4.         System.out.println(s2);
复制代码



回复 使用道具 举报 1 0
forrasiel 发表于 2016-4-13 19:00
我也不知道我说的对不对,今天刚好看视频看到这里:

1,一个{}中不能出现2个同名变量;

可以.............
回复 使用道具 举报

我把代码也贴上来了你看看
回复 使用道具 举报
+=底层有做强制类型转换   
回复 使用道具 举报
前者是错的  java中运算符计算默认会提升为int类型 所以最终的结果是int类型 前者需要强转
后者是对的  java中+=底层默认强制转换
回复 使用道具 举报
前面的s1和int整型1相加,会强制提升类型为int,结果赋值给s1会出现精度损失。后面的+=运算符右面的1为常量,在编译时会自动转型为short,不会报错
回复 使用道具 举报
楼上说的对。
回复 使用道具 举报
cohle1992 来自手机 中级黑马 2016-4-13 21:15:39
9#
类型提升的问题
回复 使用道具 举报

s1 = s1+1会损失精度
回复 使用道具 举报
java计算short之间的数据会转成int类型,所以当你计算完之后赋值需要强转成short
回复 使用道具 举报
这个day2说的非常清楚,lz自己去看看吧,就是类型强转的问题.
回复 使用道具 举报
+= *= ++ 等 底层都有自动类型转换
回复 使用道具 举报
楼上说的很清楚了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马