`
xusulong
  • 浏览: 80969 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

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

阅读更多

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

  1. 要使局部变量的作用域最小化,最有力的方法就是在第一次使用它的地方声明
  2. 几乎每个局部变量的声明都应该保护一个初始化表达式
    1. 例外,try-catch,因为初始化会被抛异常,那么在try外声明,在内部初始化
  3. 使方法小而集中,使得一个操作相关的变量不会被另一个操作的代码操作

第46条:for-each循环优先于传统的for循环

  1. 迭代器和索引变量更容易出错

  2. for的for(int i = 0; i < a.lenght; i ++) 每次a.length都执行,性能低,容易忘记
  3. 例外
    1. 过滤:遍历删除部分元素,用remove需要i
    2. 转换:遍历列表或者数组,并取代部分元素值
    3. 平行迭代:同时并行遍历多个集合

第47条:了解和使用类库

类库虽然比较大,但是还是应该熟悉java.lang, java.util, java.io 包括,collections,concurrent等等

因为类库受关注和改进比普通人要更受关注,因此使用会更好

第48条:如果需要精确的答案,请避免使用float和double

  1. float和double类型主要是为了科学计算和工程计算而设计的,它们执行的是二进制浮点运算,并没有提供完全精确的结果,如(1 - 9 * .10) = 0.09999999999999998
  2. 用BigDecimal,int或者long进行精确计算,尤其是货币的时候
  3. BigDecimal,优点,完全控制舍入模式8种,缺点,不方便(类型),慢。
  4. 如果数值范围没有超过9位十进制数字,就可以使用int;如果不超过18位数字,就可以使用long;如果数值可能超过18位数字,就必须使用BigDecimal。

第49条:基本类型优先于装箱基本类型

  1. 选择的时候优先使用基本类型
  2. 这些时候应该使用装箱基本类型
    1. 作为集合中的元素,键和值
    2. 参数化类型<T>中
    3. 进行反射的方法调用
  3. 当一项操作中混合基本类型和装箱基本类型时,装箱基本类型就会自动拆箱,可能会导致NullPointException;另,自动装箱减少了使用装箱基本类型的繁琐,但并没有减少风险。当程序用==比较两个装箱基本类型时候,做了同一性比较,几乎肯定不是你所希望的
  4. 装箱导致高开销和不必要的对象创建

第50条:如果其他类型更合适,则尽量避免使用字符串

  1. 字符串不适合代替其他的值类型,如int,是否的boolean等
  2. 不适合代替枚举
  3. 不适合代替聚集类型,如使用分隔符来存储数据,不是好的方式 ,a#b#c,以#来间隔
  4. 不适合代替能力表,如用string基于键的api

第51条:当心字符串连接的性能

  1. +是把多个字符串合并为一个字符串的遍历途径,但是大规模时候,为连接n个字符串,重复使用连接符操作,需要n的平方级。因为字符串是不可变的,造成了很多需要垃圾回收的中间对象。事实上,每个+会自动引入一个StringBuilder,来构造新的string。
  2. 使用StringBuilder的append方法,分配一次,使用多次,可以预分配大小,也可以让其自动扩展
  3. 原则,不要使用字符串连接符来合并多个字符串,除非性能无关紧要。应该使用StringBuilder或者String数组

第52条:通过接口引用对象

  1. 如果有合适的接口类型存在,那么对于参数,返回值,变量和域来说,就都应该使用接口类型进行声明,通常更改实习的时候,只是更改构造器中类的名称,如
    List<Subscriber> subscribers = new Vector<Subscriber>();
    改为
    List<Subscriber> subscribers = new ArrayList<Subscriber>();
  2. 注意:如果原来的实现提供了特殊的功能,而这种功能并不是接口所有,周围的代码又依赖于次功能,新的实现也要提供同样的功能。
  3. 如果没有合适的接口存在完全可以用类而不是接口来引用对象,如值类型,已经没有关联接口的具体类
  4. 对象属于框架,则用基础类来引用对象 如java.util.TimerTask
  5. 类实现接口,但是有接口没有的方法
  6. 总之,接口引用对象会使程序更加灵活,如果不能,使用类层次结构中提供了毕业功能的最基础的类

第53条:接口优先于反射机制

对反射理解不深

第54条:谨慎地使用本地方法

  1. 指使用本地程序设计语言编写的特殊方法
  2. jvm越来越快,本地方法提供性能不值得
  3. 本地语言不安全,平台相关,不方便移植
  4. 尽可能少使用,必要时候才使用,而且极少数情况会用到,并全面测试

第55条:谨慎第进行优化

不要费力去编写快速的程序,应该努力编写好的程序,速度随之而来

第56条:遵守普遍接受的命名惯例

命名规范

如果长期养成的习惯与此不同,不要盲目遵从这些命名规范,可以运用常识

  • 大小: 39.2 KB
0
1
分享到:
评论

相关推荐

    Effective Java读书笔记.pdf

    "Effective Java读书笔记" Effective Java是一本关于Java编程语言的经典书籍,本笔记主要总结了Java语言的发展历程、静态工厂方法的应用、构造器模式的使用等重要知识点。 一、Java语言的发展历程 Java语言的发展...

    effective java 读书笔记

    《Effective Java》是Java开发领域的经典著作,作者Joshua Bloch深入浅出地阐述了编写高效、健壮的Java代码的技巧和最佳实践。以下是对该书部分内容的详细解释: 1. **产生和销毁对象** - Item1:静态工厂方法相比...

    《Effective Java》读书分享.pptx

    "Effective Java 读书分享" 《Effective Java》读书分享.pptx 是一本 Java 编程语言指南,旨在帮助开发者编写高质量、可维护的 Java 代码。该书包含 90 个条目,每个条目讨论一条规则,涵盖了 Java 编程语言的...

    Effective-Java读书笔记

    《Effective Java》是Java...以上仅是《Effective Java》一书中部分核心知识点的概述,实际的读书笔记中会更详细地解释这些概念,并给出具体的示例代码。通过深入学习和实践,开发者可以极大地提升其Java编程的水平。

    精版Effective STL读书笔记

    根据给定的文件信息,以下是对“精版Effective STL读书笔记”的详细解析,重点提炼了STL(标准模板库)中的关键知识点。 ### 标题:“精版Effective STL读书笔记” 此标题暗示了文档是针对《Effective STL》一书的...

    Effective Java第三版1

    《Effective Java》是Java编程领域的一本经典著作,由Joshua Bloch撰写,它提供了许多最佳实践和设计原则,帮助开发者写出更高效、更可维护的代码。第三版延续了这一传统,对Java语言的新特性进行了更新,并给出了...

    2021年EFFECTIVEJAVA读书笔记.docx

    Effective Java 读书笔记 - 枚举与注解 本文总结了Effective Java 中关于枚举与注解的知识点,涵盖了枚举类型的优点、使用指南、避免使用 int 常量、使用 EnumSet 和 EnumMap 等。 枚举类型的优点 枚举类型提供了...

    读书笔记:Effective Java中文版第3版笔记.zip

    读书笔记:Effective Java中文版第3版笔记

    读书笔记:Effective Java中文版 第2版.zip

    读书笔记:Effective Java中文版 第2版

    Effective-Java读书笔记(上)

    ### Effective Java读书笔记(上) #### 第一章 引言 本书主要针对Java开发者提供了大量实用的编程指导建议,帮助读者提升代码质量和程序性能。在本章节中,我们将重点介绍对象的创建与销毁,以及一些重要的设计...

    effective c++读书笔记

    从给出的部分内容来看,读书笔记主要聚焦于以下几个知识点: 1. C++语言的联邦概念:C++是一个由多个次语言构成的语言联邦,这包括了C语言核心、面向对象的C++、模板C++以及标准模板库(STL)。这种理解对于深入...

    读书笔记:Effective Java中文版学习项目.zip

    读书笔记:Effective Java中文版学习项目

    读书笔记:Effective Java中文版第二版示例、笔记.zip

    读书笔记:Effective Java中文版第二版示例、笔记

    读书笔记:Effective Java 中文版(2版和3版).zip

    读书笔记:Effective Java 中文版(2版和3版)

    effectiveJava的笔记

    这本书的第三版包含了大量更新,涵盖了Java语言和平台的新发展,如Java 8和Java 9的新特性。以下是对《Effective Java》笔记中可能涉及的关键知识点的详细解读: 1. **单例模式**:书中强调了如何正确实现单例模式...

    读书笔记:Java练习包括《Java编程思想》《算法》《Effective Java》等.zip

    读书笔记:Java练习包括《Java编程思想》《算法》《Effective Java》等

    读书笔记:Effective Java中文版第二版示例代码.zip

    读书笔记:Effective Java中文版第二版示例代码

    effective-java.pdf

    标题“effective-java.pdf”与描述“effective-java.pdf”表明本文档是关于Java编程实践的指南,且内容可能来自于一本名为《Effective Java》的书籍,该书是由Joshua Bloch编写,被广泛认为是Java编程的权威指南。...

Global site tag (gtag.js) - Google Analytics