[Effective Java 读书笔记] 第8章 通用程序设计

本章主要讲了以下几条基本的JAVA编程原则:

1.将局部变量的作用域控制在最小,在使用时才定义

2.for-each优于for循环

    有三个例外(1,2点主旨就是,for each只能用于读取,不能用于修改):

     1. 如果要删除集合中的一个元素,需要显示的使用迭代器,以便调用迭代器iterator的remove方法(也不能使用集合的remove在循环中删除);不能直接在for each里删除:

        List<String> ll = new ArrayList<String>();
        ll.add("11");
        ll.add("11");
        ll.add("12");
        ll.add("13");
        ll.add("14");
        ll.add("15");
        for(String e :ll){
            if(e.equals("13")){
                ll.remove(e);                
            }
        }
        System.out.println(ll);


Exception in thread "main" java.util.ConcurrentModificationException
    at java.util.ArrayList$Itr.checkForComodification(Unknown Source)
    at java.util.ArrayList$Itr.next(Unknown Source)
    at MainTestJava.main(MainTestJava.java:21)

 

     2. 如果要修改集合中的元素值,需要迭代器,以便设定元素值

     3. 平行迭代,如果需要并行的遍历多个集合,就需要显示的控制爹地阿奇或者索引变量,以便所有迭代器或者索引变量都可以得到同步前移,

3.基本类型优于装箱基本类型;基本类型更简单,快速,

     a. 基本类型和装箱类型混合使用, 装基本类型都会被拆箱

     b. 当作为集合中的元素 键和值时,必须使用装箱类型

4.如果使用其他类型更适合,避免使用String

5.字符串连接操作符 +效率低,使用StringBuilder来替代String进行StringBuilder的append操作

6.使用接口而不是类来引用对象。这样程序会更加的灵活

7.反射是一种功能强大的机制,对于特定的复杂系统编程任务(工具类)是必须的,但是也有一些缺点:

    a.反射三十了编译时类型检查的好处

    b.执行反射访问所需要的代码非常笨拙和冗长

    c.性能松狮

posted @ 2015-11-05 22:40  jiangz222  阅读(191)  评论(0)    收藏  举报