• [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.性能松狮

  • 相关阅读:
    第五章 χ2检验
    统计学中的自由度
    第四章 统计推断
    个性化排序算法实践(二)——FFM算法
    个性化排序算法实践(一)——FM算法
    稀疏矩阵在Python中的表示方法
    个性化召回算法实践(五)——item2vec
    个性化召回算法实践(四)——ContentBased算法
    个性化召回算法实践(三)——PersonalRank算法
    个性化召回算法实践(二)——LFM算法
  • 原文地址:https://www.cnblogs.com/jiangz222/p/4941106.html
Copyright © 2020-2023  润新知