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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

java中  z+=x等价于z=z+x    这是为什么????怎么感觉有点不懂呢。

28 个回复

倒序浏览
两种不同方式的写法而已
回复 使用道具 举报
两种在int类型的情况下才是等同的,当你前面定义z为baye类型的时候z+=x,他会自动转换类型,而z=z+x的时候是会报错的,因为z会被强制转换,而你定义的z有不是int的情况下
回复 使用道具 举报
我是这样理解的,这是java的一种特殊的运算,+=就是自身加加,需要注意的是 z+=x和z=z+x的区别是+=运算后类型不会提升,而第二种运算会提升类型,比如 z是byte类型的,那么+=运算后还是byte类型,但是如果第二种运算就会报错,因为类型提升,导致的缺失精度,懂了吧,纯手工 嘿嘿
回复 使用道具 举报
付欢 发表于 2015-6-7 20:33
两种不同方式的写法而已

可以详细说一下么  谢谢  有点不太明白 为什么他们等价  
回复 使用道具 举报
岑寂 发表于 2015-6-7 20:44
两种在int类型的情况下才是等同的,当你前面定义z为baye类型的时候z+=x,他会自动转换类型,而z=z+x的时候是 ...

你好    谢谢     可以详细说一下吗       有点不太明白     为什么他们等价呢
回复 使用道具 举报
八戒 发表于 2015-6-7 20:45
我是这样理解的,这是java的一种特殊的运算,+=就是自身加加,需要注意的是 z+=x和z=z+x的区别是+=运算后类 ...

:)    谢谢   你可以再跟我说说   z+=x为什么等价z=z+x   
回复 使用道具 举报
迷路的小孩儿 发表于 2015-6-7 20:51
谢谢   你可以再跟我说说   z+=x为什么等价z=z+x

这是java中的一种运算符,你不必要纠结它为什么要等于另一个,你只要记住他们俩的区别就行,面试不会问你为什么会等价的,但是可能会问你他们之间的区别,懂?
回复 使用道具 举报
迷路的小孩儿 发表于 2015-6-7 20:48
你好    谢谢     可以详细说一下吗       有点不太明白     为什么他们等价呢  ...

也不完全等价啊!还要看两个变量是什么类型的!如果把x当作1,z又是in类型的话其实z+=x就像z=z+x的简写啊!
回复 使用道具 举报
你可以查查java中自定义运算符重载的知识,然后看看+=是怎么实现功能的
回复 使用道具 举报
八戒 发表于 2015-6-7 20:58
这是java中的一种运算符,你不必要纠结它为什么要等于另一个,你只要记住他们俩的区别就行,面试不会问你 ...

好的     谢谢啦
回复 使用道具 举报
QQheima 发表于 2015-6-7 21:04
你可以查查java中自定义运算符重载的知识,然后看看+=是怎么实现功能的

谢谢      
回复 使用道具 举报
岑寂 发表于 2015-6-7 20:59
也不完全等价啊!还要看两个变量是什么类型的!如果把x当作1,z又是in类型的话其实z+=x就像z=z+x的简写啊 ...

谢谢     
回复 使用道具 举报
+=,/=,*=,-=扩展运算符,是将左右两边相加再将值赋值给左边,其中包含了对左边类型的强制类型转换,而分开写的话会有编译报错提示类型不匹配,需要记住的就是这其中的类型转换。
回复 使用道具 举报
格式问题而已,应该没有为什么
回复 使用道具 举报
不光是java啊,语言特性
回复 使用道具 举报
这种写法意思就是:把左右俩边的相加   然后再把值  赋给  左边
回复 使用道具 举报
路过学知识
回复 使用道具 举报
+=的意思就是把左边和右边的变量相加再赋值给左边,
回复 使用道具 举报
有的东西不需要问为什么,只需要记住即可
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马