优先选择 for 循环而不是 while 循环

例如,下面是遍历集合的首选方式

// Preferred idiom for iterating over a collection or array
for (Element e : c) { ... // Do Something with e
}

如果需要在循环中调用 remove 方法,首选传统的 for 循环代替 for-each循环:

// Idiom for iterating when you need the iterator
for (Iterator<Element> i = c.iterator(); i.hasNext(); ) {Element e = i.next();... // Do something with e and i
}

要了解为什么这些 for 循环优于 while 循环,请考虑以下代码片段,其中包含两个 while 循环和一个 bug:

Iterator<Element> i = c.iterator();
while (i.hasNext()) {doSomething(i.next());
}
...
Iterator<Element> i2 = c2.iterator();
while (i.hasNext()) { // BUG!doSomethingElse(i2.next());
}

for 循环比 while 循环还有一个优点:它更短,增强了可读性

for (int i = 0, n = expensiveComputation(); i < n; i++) {... // Do something with i;
}

最小化局部变量作用域的最终技术是保持方法小而集中。 如果在同一方法中组合两个行为(activities),则与一个行为相关的局部变量可能会位于执行另一个行为的代码范围内。 为了防止这种情况发生,只需将方法分为两个:每个行为对应一个方法

Effective Java~57. 将局部变量的作用域最小化相关推荐

  1. Effective Java之将局部变量的作用域最小化(四十五)

    这条规则应该是我们平常容易遵守的规则. 我们很少会把所有的局部变量在程序的开始就声明出来,大部分人还是习惯在第一次使用它的地方声明.原因很简单,写起来容易,别人读起来也好读. 对于平时写代码写的多的人 ...

  2. 第57条:将局部变量的作用域最小化

    在代码块的开头就声明局部变量不是个好习惯,要改 local variable应该在第一次使用的地方声明,过早的声明会分散阅读程序人的注意力(这个变量干嘛用的?) ⭐️ 局部变量声明时就应该进行&quo ...

  3. effective java第45条:将局部变量的作用域最小化

    我以前写for循环的例子: public class Client {public static void main(String[] args) {Client client = new Clien ...

  4. 认清JavaScript和JAVA全局变量和局部变量的作用域

    认清JavaScript和JAVA全局变量和局部变量的作用域 2010年2月28日 george 发表评论 阅读评论 通过淘宝面试题来认清JavaScript和JAVA全局变量和局部变量的作用域 注意 ...

  5. Java JFrame隐藏标题栏以及最大化最小化关闭和拖动

    CSDN上第一篇博客,请大家多多支持! // 转载请注明出处! 直入主题吧,目前主流的软件,图形化界面一般都没有标题栏,优点是简单大方.然而,界面的最大化最小化和关闭按钮也随之隐藏,窗体也无法拖动.因 ...

  6. 第 3 次读 Effective Java,这 58 个技巧最值!

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来源:Dong GuoChao <Effective ...

  7. 读完《Effective Java》后,总结了 50 条开发技巧

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | Dong GuoChao 来源 | https ...

  8. 读完 Effective Java,我整理了 59 条技巧!(含pdf)

    点击⬆️方"逆锋起笔",公众号回复 编程资源领取大佬们推荐的学习资料 上一篇:CTO 写低级 Bug,致公司 70 GB 数据泄露! 作者:Dong GuoChao 链接:http ...

  9. \(^_^)/ Effective java

    读<Effect Java中文版> 译者序 序 前言 第1章引言 1   第2章创建和销毁对象 4 第1条:考虑用静态工厂方法代替构造函数 4 第2条:使用私有构造函数强化singleto ...

最新文章

  1. nmake构建Geos库
  2. [转] 鼠标移入/移出颜色渐变
  3. java hashcode 多少位_hash-为什么XOR通常在Java hashCode()中使用,而很少使用按位运算符?...
  4. iOS中的UIView的基本属性1
  5. Spring with multiple transaction managers
  6. Atitit. 提升可读性推荐标准规范解决方案 关于编程语言的v5 docx
  7. 基于微信小程序的智能推荐点餐系统(附全部代码)
  8. windows服务封装程序srvany和nssm的区别
  9. 加装机械硬盘遇到的错误
  10. excel表格中隔行自动换颜色?
  11. QQ群课堂无法打开和加入
  12. 乐吾乐2D可视化智慧光伏能源赋能方案
  13. oracle中修改用户密码
  14. 读 Stephen Prata 之 C++ Primer Plus
  15. python实现 空间前方交会
  16. QQ游戏外挂制作教程 (对对碰)
  17. 玻璃心?App Store下架PP助手与360手机助手,做aso会被苹果下架吗
  18. 关于顺序高斯消去法的matlab实现
  19. word2007插入页码里面不显示或没选项可点怎么办?
  20. 2020考研数学-数二考试大纲原文(21可做参考)

热门文章

  1. 论文浅尝 | BoxE:一种基于Box的知识图谱表示学习模型
  2. 自然语言处理语言资源项目
  3. Android UI之困 横跨四个屏幕的战争
  4. 201671030111 李蓉 实验十四 团队项目评审课程学习总结
  5. 1.15-1.16 sqoop action
  6. Nginx+Fastdfs
  7. Java9都快发布了,Java8的十大新特性你了解多少呢?
  8. 鼠标关机后仍然发光的实用解决方法
  9. QT高级编程之基本函数用法
  10. 【剑指offer】面试题25:合并两个排序的链表(Java)