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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© love~陌 中级黑马   /  2014-3-11 19:13  /  834 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

short s = 3;

s=s+2;
s+=2;   
有什么具体的区别?
放大了讲,二者是等同的,但不是等价

2 个回复

倒序浏览
如果声明的s是short类型,例如:
short s =2
s =s+2编译的时候会报错,因为s+2的时候会提升为int类型,然后再赋给short类型的s时会报错:损失精度。
s+=2则可以通过编译,因为它内部会有一个自动转换过程。
这应该是它们的主要区别

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

回复 使用道具 举报
对于short s1 = 2; s1 = s1 + 2; 由于s1+1运算时会自动提升表达式的类型,所以结果是int型,再赋值给short类型s1时,编译器将报告需要强制转换类型的错误。


     对于short s1 = 2; s1 += 2;由于 += 是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译。


PS:数据类型的转换
java的数据类型在定义时已经确定了,因此不能随意转换成其他类型的数据类型,但java允许用户有限度的做类型转换处理。
java会在下列条件都成立时,自动做数据转换类型
1 转换前的数据类型与转换后的类型兼容
2 转换后的数据类型的表示范围比转换前的类型大

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马