java中++和+=的执行原理有什么不同?
比如一个变量i
i++和i+=1这两种执行方式有什么不同?
java中++和+=的执行原理有什么不同?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
6条回答 默认 最新
- mymailzxj_1 2012-06-15 11:35关注
i+=1 运行的底层Heap申请一个区域存放i,在数据区域开劈一个区域存放1,2个内存段被数据被送入到寄存器中进行运算,运算结果被放到heap中,数据区域运算后被自动释放后有GC回收
i++ 是将heap中数据直接送到寄存器中进行运算,运算结果会直接存放在heap中。
从上面的可以写个测试程序测试:
for(int i=0;i<100000;i++){
i++;
}和
for(int i=0;i<100000;i++){
i+=1;
}
第二个每运行一次需要在数据区域申请内存存放1,用完后再释放。
如果要提升i+=1的运行效率的话,可以讲1作为一个静态变量存储,如:
public static int cnt = 1;
for(int i=0;i<100000;i++){
i+=cnt;
}
因为静态变量只要申请一次就永久存在内存中了,第二次使用时直接从内存中取用而不用不停的申请内存和释放内存了本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 西门子plc6ES7217-1AG40-0XB0怎么rs485通讯呀!
- ¥15 matlab有svec这个函数吗?
- ¥15 无法调用VideoWriter_fourcc
- ¥15 VB6.0无法加载网页验证码图片到picturebox中,求解。
- ¥15 C#和GDAL对栅格处理
- ¥15 我现在有一些关于提升机故障的专有文本数据,量也不多,我在label studio上进行了关系和实体的标注,完成了知识图谱的构造,那么我使用生成式模型的话,我能做哪些工作来写我的论文?
- ¥15 电脑连不上无线网络如下诊断反馈应该如何操作
- ¥15 telegram api 使用forward_messages方法转发消息时,目标群组里面会出现此消息来源,如何隐藏?
- ¥15 关于#tensorflow#的问题:有没有什么方法可以让机器自己学会像素风格的图片
- ¥15 Oracle触发器字段变化时插入指定值