我写了个测试程序。
import java.util.ArrayList;
import java.util.List;
public class TestFor {
private static void m1(List list) {
for(int i=0;i<10;i++)
{
Object ox = new Object();
list.add(ox);
}
}
private static void m2(List list) {
Object o = null;
for(int i=0;i<10;i++)
{
o = new Object();
list.add(o);
}
}
public static void main(String[] args) {
Object[] array = new Object[10];
List list = new ArrayList();
m2(list);
m1(list);
}
}
“代码难道不是这么写的?”的帖子里就是关心m1和m2哪个写法更优.
我反编译了上面的程序,由于我们实际只关心m1和m2,所以下面只贴出部分字节码
private static void m2(List list)
{
// 0 0:aconst_null
// 1 1:astore_1
// 2 2:iconst_0
// 3 3:istore_2
// 4 4:goto 26
// 5 7:new #3 <Class Object>
// 6 10:dup
// 7 11:invokespecial #8 <Method void Object()>
// 8 14:astore_1
// 9 15:aload_0
// 10 16:aload_1
// 11 17:invokeinterface #32 <Method boolean List.add(Object)>
// 12 22:pop
// 13 23:iinc 2 1
// 14 26:iload_2
// 15 27:bipush 10
// 16 29:icmplt 7
// 17 32:return
}
private static void m1(List list)
{
// 0 0:iconst_0
// 1 1:istore_1
// 2 2:goto 24
// 3 5:new #3 <Class Object>
// 4 8:dup
// 5 9:invokespecial #8 <Method void Object()>
// 6 12:astore_2
// 7 13:aload_0
// 8 14:aload_2
// 9 15:invokeinterface #32 <Method boolean List.add(Object)>
// 10 20:pop
// 11 21:iinc 1 1
// 12 24:iload_1
// 13 25:bipush 10
// 14 27:icmplt 5
// 15 30:return
}
对比上面两个方法,可以发现基本一样,就是计数器和对象引用的在变量表中交换了下位置。
如果非要分出个好坏,m2把变量定义在外面,并初始化为null,反而多了两个bytecode指令。
分享到:
相关推荐
高级 3:写错的不是最新的提交,而是倒数第二个? 学习时长: 6分32秒 14 高级 4:比错还错,想直接丢弃刚写的提交? 学习时长: 1分47秒 15 高级 5:想丢弃的也不是最新的提交? 学习时长: 5分44秒 16 高级 6:代码...
高级 3:写错的不是最新的提交,而是倒数第二个? 学习时长: 6分32秒 14 高级 4:比错还错,想直接丢弃刚写的提交? 学习时长: 1分47秒 15 高级 5:想丢弃的也不是最新的提交? 学习时长: 5分44秒 16 高级 6:代码...
在这里,我们将深入探讨Java中解决读者写者问题的策略,并分析提供的代码可能存在的一些问题。 读者写者问题的核心在于:读者不互斥,可以同时读取数据;但当有写者在写入数据时,必须独占资源,即不允许任何读者或...
三、数据可视化需要写代码吗? 目前,许多数据可视化大屏软件如酷屏、Power BI、Tableau Public和Google Analytics都提供了无需编码的界面,用户可以通过预设的模板和组件来构建和分析数据。这些工具降低了数据可视...
以下是一些关于好的程序员写代码的特点和技巧: 1. **整洁规范**:好的程序员注重代码的视觉美感,空白和注释的布局都显得错落有致,遵循统一的命名和排版规范,使得代码易于阅读和理解。 2. **命名一致性**:他们...
根据给定文件的信息,我们可以总结出“写好代码的十大秘诀”所涵盖的关键知识点,并对这些知识点进行详细的阐述。 ### 一、Solid and Robust Code(稳固可靠的代码) 稳固可靠的代码意味着代码能够在各种不同的...
本案例聚焦于一个特定的问题:在MyEclipse 2017中,当在JSP页面中使用`<c:if>`标签时,导致其后面的代码显示颜色异常,即一半是黑色,一半是彩色。这个问题主要涉及到两个核心技术点:JSP和`<c:if>`标签。 首先,...
**写好代码的十个秘诀** 在编程领域,代码质量至关重要,因为它直接影响到软件的可读性、可维护性以及性能。微软中国研究院分享了“写好代码的十个秘诀”,旨在帮助开发者提升编码技能,实现更高效、更优雅的编程。...
有朋友邮件问我如何用CANoe的CAPL读取S19...基于此,我愿和大家一起分享我以前写的代码,不是很完善,敬请大家见谅。有更优化的,请和我分享,谢谢! 我的邮箱:tianhua_ming@126.com 如果回复不是很及时,请谅解!
"谁说不能在Word下写代码"这一主题,就是一种打破常规的尝试。这里,通过WPS Word插件,开发者陈旭实现了在Word中编程的可能性。 这个插件的核心是集成Microsoft的命令行编译器cl.exe,这是一个C++编译器,通常在...
【作品名称】:基于...【资源声明】:本资源作为“参考资料”而不是“定制需求”,代码只能作为参考,不能完全复制照搬。需要有一定的基础能够看懂代码,能够自行调试代码并解决报错,能够自行添加功能修改代码。
【标题】:“模仿MessageBox的代码实现” 在编程领域,经常需要与用户...在后续的学习中,建议关注代码风格的提升,同时深入理解Windows编程的核心原理,这样可以在实现功能的同时,也能写出高质量、易于维护的代码。
在IT行业中,编程不仅仅是关于逻辑和效率,有时候它也可以是一种表达情感的方式。在这个案例中,我们看到一个名为"表白代码"的项目,虽然并非作者原创,但其效果被评价为"还是可以的"。这个项目标签为"javascript",...
在为ARM架构编写C代码时,你需要了解一些关键的概念和技术,因为ARM处理器...提供的文档《android开发板.doc》、《android开发.PDF》以及《怎样为arm写c代码.pdf》应该能进一步深化你的理解,帮助你在实践中解决问题。
以下是一些有助于写出更好代码的习惯: 1. **保持代码整洁与一致性**:遵循统一的代码风格和格式,例如,缩进、空格和命名约定。每个函数或方法应保持单一职责,避免过长的代码块。当需要添加新功能时,先考虑如何...
基于此,我愿和大家一起分享我以前写的代码,不是很完善,敬请大家见谅。有更优化的,请和我分享,谢谢! PS:和这个资源一样,只是原资源要50积分也太多了吧,一般用户根本下载不下来,所以我上传一个。
高效编程不仅仅是关于如何写出快速运行的代码,更重要的是如何合理利用系统资源,以及如何在性能和开发效率之间找到平衡点。通过以上提到的编码技术和编译优化技术,我们可以有效地提高VB代码的执行效率。此外,良好...
高级 3:写错的不是最新的提交,而是倒数第二个? 学习时长: 6分32秒 14 高级 4:比错还错,想直接丢弃刚写的提交? 学习时长: 1分47秒 15 高级 5:想丢弃的也不是最新的提交? 学习时长: 5分44秒 16 高级 6:代码...
【实践与技巧】写好链表代码需要时间和大量实践。投入时间反复练习,直到能够熟练编写无错误的代码,是提高技能的关键。同时,掌握以上提到的指针理解、避免指针丢失和使用哨兵节点的技巧,也能帮助我们更轻松地处理...