首页 / JAVA / EffectiveJava-1
EffectiveJava-1
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了EffectiveJava-1,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1587字,纯文字阅读大概需要3分钟。
内容图文
![EffectiveJava-1](/upload/InfoBanner/zyjiaocheng/689/16f75739cca540af9f17417554f3efe3.jpg)
最近在看EffectiveJava,记录一下,分享一下自己的心得。
一、将局部变量的作用于最小化
- 在第一次使用的地方进行声明,过早的声明局部变量,会延长局部变量的生命周期,若在代码块外声明变量,当程序结束代码块后,该变量还是存在的,这并不是我们想要的结果(应该代码块结束后变量销毁)
- 当具有足够的信息进行初始化时再进行声明(try-catch代码块除外),当变量的值必须在try块的外部用到,它就必须在try块之前被声明。
- 若在循环终止之后不再需要循环变量的内容,能使用for循环就使用for循环,尽量不用while循环。for循环结束后,其局部变量全部销毁,while循环结束后,其变量可能还会存在;for循环比while循环更简洁;for循环中出现错误,程序不会通过编译,while循环中出现错误会在运行时报错。
二、for-each循环优于传统的for循环
- for-each循环不用关心容器的类型。
- for-each循环完全隐藏了迭代器或者索引变量,避免了混乱和出错的可能。
- for-each循环不仅能遍历集合和数组,还可以遍历实现Iterable接口的任何对象。
- 三种情况下无法使用for-each循环
- 解构过滤,遍历集合过程中需要删除指定的元素。
- 转换,若需要遍历列表或数组,并取代它的部分或者全部元素值,需要列表迭代器或者数组索引,便于设定元素的值
- 平行迭代,如果需要并行地遍历多个集合,就要显式的控制迭代器或者索引变量。
平行迭代的例子:
enum Num{ONE,TWO,THREE,FOUR,FIVE,SIX} ... Cllection<Num> nums= EnumSet.allOf(Num.class); for (Iterator<Num> i = nums.iterator();i.hasNext();) for(Iterator<Num> j = nums.iterator();j.hasNext();) System.out.println(i.next()+" "+j.next());
输出结果为:
ONE ONE TWO TWO THREE THREE FOUR FOUR FIVE FIVE SIX SIX
此处需要注意:如此循环并不会输出6*6个结果,并且若外层遍历的容器中元素个数少于内层遍历的容器中元素个数,则会抛出NoSuchElementException异常。
参考:《Effective java》P219~P224
内容总结
以上是互联网集市为您收集整理的EffectiveJava-1全部内容,希望文章能够帮你解决EffectiveJava-1所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。
来源:【匿名】