java中a+=b与a=a+b有什么区别么?

zs5574010 2011-09-20 10:07:48
如题 求指教
...全文
6308 77 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
77 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangshuai_521 2012-02-01
  • 打赏
  • 举报
回复
这个是有区别的,关键要看类型的,比如 short 还是int 。这个很关键,疏忽了这点可能会报错的。
  • 打赏
  • 举报
回复
前者会自动转型,后者不会,会抛出编译错误。
walking56489 2012-01-31
  • 打赏
  • 举报
回复
没有啥区别...
天堂的眼泪 2012-01-31
  • 打赏
  • 举报
回复
我感觉没有问题,结果一样的
魂寒 2012-01-31
  • 打赏
  • 举报
回复
其实这是一个很有价值的问题,提醒我们学习的时候多注意细节。细节太多,大家一起发现,一起注意吧。谢谢楼主,一个好问题,学习了。
azg2008abc 2012-01-31
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 fanly1987444 的回复:]
引用 7 楼 jayyounger 的回复:
a+=b --> a=(a.Type)a+b;//返回的是a类型
a=a+b --> a=a+b;//返回类型是a类型与b类型中的最高类型

这个说的对,如果有这样的代码:short a = a + 1;这句编译时会报错,因为a+1以后,类型强制转换为int,这是在赋值给short类型的a就错了,但是short a=1; a+=1;就不会报错+……
[/Quote]以前见到过,后来又忘记了,复习一下
fensese 2012-01-30
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 jayyounger 的回复:]
a+=b --> a=(a.Type)a+b;//返回的是a类型
a=a+b --> a=a+b;//返回类型是a类型与b类型中的最高类型
[/Quote]

public class Test {

/**
* @param args
*/
public static void main(String[] args) {

int b = 1;

long a = 1;

a = b + a;

System.out.println("The Result is:" + a);

b = 1;

a = 1;

a += b;
System.out.println("The Result is:" + a);
}
}

結果:
The Result is:2
The Result is:2


刚刚引用错误了!
fensese 2012-01-30
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 z6683227 的回复:]
楼上说的对。
如果类型不同的话会引起问题。
[/Quote]

public class Test {

/**
* @param args
*/
public static void main(String[] args) {

int b = 1;

long a = 1;

a = b + a;

System.out.println("The Result is:" + a);

b = 1;

a = 1;

a += b;
System.out.println("The Result is:" + a);
}
}

結果:
The Result is:2
The Result is:2
likj_sh 2012-01-30
  • 打赏
  • 举报
回复
这么偏的问题哦~偶算是学习到了~
小V小V志 2012-01-30
  • 打赏
  • 举报
回复
高手 [Quote=引用 7 楼 jayyounger 的回复:]

a+=b --> a=(a.Type)a+b;//返回的是a类型
a=a+b --> a=a+b;//返回类型是a类型与b类型中的最高类型
[/Quote]
zysnba 2012-01-30
  • 打赏
  • 举报
回复
a+=b 的运行效率 比 a=a+b 高。
zysnba 2012-01-30
  • 打赏
  • 举报
回复
a+=b 的运行效率 比 a=a+b 高。
paradise 2012-01-30
  • 打赏
  • 举报
回复
嗯,学习细节,平时没注重细节
  • 打赏
  • 举报
回复

short a = 10;
int b = 10;
a += b;
a = a + b;//这里会报错。。


a为int,b为short就正确

int a = 10;
short b = 10;
a += b;
a = a + b;
小舞 2012-01-28
  • 打赏
  • 举报
回复
JAVA效率没差别吧?
北吹 2012-01-27
  • 打赏
  • 举报
回复
java中两者效率没差别,但是a+=b的写法会自动转换类型,个人观点还是a=a+b更好,需要类型转换的时候写成强制转换,这样能提高可读性。
djlxue 2012-01-26
  • 打赏
  • 举报
回复
C++ 中前者效率更好,JAVA没什么区别
wnf2009 2012-01-26
  • 打赏
  • 举报
回复
数据类型不同就不一样了
zhifjin 2012-01-25
  • 打赏
  • 举报
回复
a = a + b;的意思就是让a的值增加b。在C++中,对于这种情况给出了一种简写
方案,即前面的语句可以写成:a += b。应当注意这两条语句从逻辑上讲都是使变量a的
值增b,但是它们实际是有区别的,后者可以被编译成优化的代码,因为其意思是使某一块
内存的值增加一定数量,而前者是将一个数字写入到某块内存中。所以如果可能,应尽量
使用后者,即a += b。这种语句可以让编译器进行一定的优化(但由于现在的编译器都非
常智能,能够发现a = a + b;是对一块内存的增值操作而不是一块内存的赋值操作,因此
上面两条语句实际上可以认为完全相同,仅仅只具有简写的功能了)。
java做为Cs 家族的语言是否可这样理解?
cyming1016 2011-09-23
  • 打赏
  • 举报
回复
细节决定一切,这些小的细节在大的项目中有时起着很重要的作用
加载更多回复(57)

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧