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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 咖啡 黑马帝   /  2011-11-17 19:51  /  2015 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

short s=3; s=s+2; s+=2;有什么区别?

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1

查看全部评分

9 个回复

倒序浏览
泼孩 黑马帝 2011-11-17 20:11:50
沙发
楼主是要问s=s+2与s+=2的区别吧?
short s=3;这句很明了,定义了short 类型s,赋值操作,将3赋给s,发生数据类型自动转换;
s=s+2,这句,s+2赋值给s, 2为int型,s为short型,表达式运行过程中发生数据类型的自动转换,计算结果为int数据类型
s+=2//左右两边的和赋值给左面,相当于s=s+2,只进行一次运算

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1

查看全部评分

回复 使用道具 举报
s=s+2 编译不能通过,加的过程不能转换数据类型  。s+=2  运算中自动转换数据类型,编译通过。

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1

查看全部评分

回复 使用道具 举报
在s=s+2;中第2个s是short类型的,2是int类型的  编译不会通过的    而s+=2  运算中自动转换数据类型,编译通过。

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1

查看全部评分

回复 使用道具 举报
给上面的人小评一下,不是因为short s = s + 2;中的这个2是int型类型才提升的,而是short类型在表达式中它首先就会先提升为int类型,若还有更高类型的,再提高到更高类型,再进行计算。你可以试看看 short a=0, b=1, c=2; a = b+c; 我看看能不能编绎。
回复 使用道具 举报
李高翔 发表于 2011-11-17 22:23
在s=s+2;中第2个s是short类型的,2是int类型的  编译不会通过的    而s+=2  运算中自动转换数据类型,编译 ...

不是因为short s = s + 2;中的这个2是int型类型才提升的,而是short类型在表达式中它首先就会先提升为int类型,若还有更高类型的,再提高到更高类型,再进行计算。你可以试看看 short a=0, b=1, c=2; a = b+c; 我看看能不能编绎。
回复 使用道具 举报
任俊杰 黑马帝 2011-11-18 08:27:10
7#
泼孩 发表于 2011-11-17 20:11
楼主是要问s=s+2与s+=2的区别吧?
short s=3;这句很明了,定义了short 类型s,赋值操作,将3赋给s,发生数据 ...

在java中s = s+2;是一个表达式运算的结果再进行赋值运算,而s+=2虽然结果看似一样,但它只是一个赋值运算。。不是因为short s = s + 2;中的这个2是int型类型才提升的,而是short类型在表达式中它首先就会先提升为int类型,若还有更高类型的,再提高到更高类型,再进行计算。你可以试看看 short a=0, b=1, c=2; a = b+c; 我看看能不能编绎。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
泼孩 黑马帝 2011-11-18 09:28:34
8#
任俊杰 发表于 2011-11-18 08:23
不是因为short s = s + 2;中的这个2是int型类型才提升的,而是short类型在表达式中它首先就会先提升为int ...

你所说的short类型自动转换为int型再参与运算,而不是因为表达式中出行int型的原因。那么,你有没有考虑过这种类型提升的原因呢?
据我所知:如果一个运算符有两个不同类型的运算数据,java语言在计算该表达式时会自动转换为同一种数据类型以便进行运算。先将较低类型的数据提升为较高的类型,从而使两者的数据类型一致(但数值不变),然后再进行计算,其结果是较高类型的数据。

至于
short a=0等后面那些,编译器会先将short型自动提升为int型,再参与运算
回复 使用道具 举报
任俊杰 黑马帝 2011-11-18 11:20:26
9#
泼孩 发表于 2011-11-18 09:28
你所说的short类型自动转换为int型再参与运算,而不是因为表达式中出行int型的原因。那么,你有没有考虑 ...

你可以试看看 short a=0, b=1, c=2; a = b+c; 我看看能不能编绎。
回复 使用道具 举报
咖啡 黑马帝 2011-11-20 12:11:41
10#
懂了,谢~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马