快速业务通道

使用原汁原味的Java语言 - 非Java原生程序员的语言流畅性 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
high = high+ low;    low = tmp; }

使用原汁原味的Java语言 - 非Java原生程序员的语言流畅性(6)

时间:2011-06-10 IBM Elliotte Rusty Harol

某些极度追求速度而又不够老练的开发人员有时会提出反对意见,认为这种 做法导致循环内执行过多操作,而不只是必要的操作,从而降低代码运行速度。 实际上,在运行时,声明根本不会执行。将声明移动到循环内绝不会给 Java 平 台造成负面的性能影响。

许多程序员,包括许多经验丰富的 Java 程序员都可能在这里止步。然而, 还有一种不太常见的技巧,将所有变量都移入循环。您可以在 for 循环的初始 化阶段声明多个变量,只需使用逗号分隔即可,如清单 9 所示:

清单 9. 在循环内声明所有变量

for (int i = 1, high = 1, low = 1; i < 20;  i++) {    System.out.println(high);    int tmp = high;    high = high + low;    low = tmp; }

这已经不仅仅是惯用的流畅代码,而是真正的专业代码。与 C 代码相比, Java 代码中的 for循环更多、while循环更少,原因就在于这种严格限制本地变 量作用域的能力。

不要回收变量

上述讨论得出这样一个结论,Java 程序员几乎不会为不同的值和对象重用本 地变量。例如,清单 10 建立了一些按钮及其关联的动作侦听器:

清单 10. 回收本地变量

Button b = new Button("Play");   b.addActionListener(new PlayAction());   b = new Button("Pause");   b.addActionListener(new PauseAction());   b = new Button("Rewind");   b.addActionListener(new RewindAction());   b = new Button("FastForward");   b.addActionListener(new FastForwardAction());   b = new Button("Stop");   b.addActionListener(new StopAction());

经验丰富的 Java 程序员会用 5 个不同的本地变量重写这段代码,如清单 11 所示:

清单 11. 未回收的变量

Button play = new Button("Play");   play.addActionListener(new PlayAction());   Button pause = new Button("Pause");   pause.addActionListener(new PauseAction());   Button rewind = new Button("Rewind");   rewind.addActionListener(new RewindAction());   Button fastForward = new Button("FastForward");   fastForward.addActionListener(new FastForwardAction());   Button stop = new Button("Stop");   stop.addActionListener(new StopAction());

为多个逻辑上不同的值或对象重用一个本地变量容易导致 bug。实际上,本 地变量(并非始终是它们指向的对象)并不影响内存和时间问题。所以不必为此 担忧,可以根据您的需要使用多个不同的本地变量。

使用原汁原味的Java语言 - 非Java原生程序员的语言流畅性(7)

时间:2011-06-10 IBM Elliotte Rusty Harol

信任垃圾收集器的内存管理能力

出身 C++ 世界的程序员往往过度担心内存消耗和内存泄漏问题。此类程序员 有两种表现。一种是在使用过变量后将变量设置为 null。另一种是调用 finalize()或将其用作一种伪析构函数。这是完全没有必要的。尽管有些时候确 实需要在 Java 代码中手动释放内存,但这种情况十分罕见。大多数时候,只需 依靠垃圾收集器即可合理快速地完成内存管理。与大多数优化一样,最佳实践准 则就是:除非能够证明是有必要的,否则不要去干涉。

使用首选原语数据类型

Java 语言有八种原语数据类型,但仅使用了其中的六种。在 Java 代码中, float 比 C 代码中少得多。float 变

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号