`
月迷津渡
  • 浏览: 101986 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

effective java 学习笔记

    博客分类:
  • Java
阅读更多
最近看了下《effective java》,非常热评的一本入门级别的java类书籍。借此机会,将上面的知识点结合我的一些看法按照item的形式一一列出,希望一直在编程中牢记这些规则,并且熟悉运用。



规则如下:

1. 用静态工厂代替构造函数,尽量避免类的无必要的创建,并且需要遵循一些,静态方法的命名规则,如valueOf,getInstatnce

2. 避免创建重复对象,比如String类使用时,尽量使用直接数,而不是用new String()来创建。

3. 避免使用finalize函数,因为该函数不保证资源一定销毁,只是对其优先级进行一定的调整。建议使用finally。唯一可能用到的情况是终止非关键的本地资源,以及安全保护的工作(用户在无法使用finally的时候)。

4. 改写类的equals()方法时,应该在满足业务的基础上尽可能的简单,应该遵循自反性,对称性,传递性,一致性。

5. 改写equals()方法时,必须实现相应的hasCode()方法,当一个hasCode()方法开销十分大时,应该考虑使用cache。

6. 习惯改写toString方法,来为当前对象的内容提供一个直观的展示。

7. clone()方法。(待补充)

8. 如果你创建的对象具有逻辑意义上的比较那么建议你实现Comparable接口。使得该对象在进行一些集合操作的时候可以得到一些附加的排序功能。而Comparator接口则不同,他可以对任何的对象调用Collections.sort(Object,Comparator),进行排序。

9. 使类和成员的可访问范围尽可能的小。

10. 如果可能使得类尽可能的成为一个不可变类,因为他的状态不变性,可以使得非常的安全。应该尽可能的将一些资源类型的类做成不可变类(单例)。

11. 复合优先于集成。只有当A is a B的时候 才推荐奖A 设计成 B的子类。或者说只有B是专门设计成抽象类的时候,才考虑让其他类继承它。

因为继承会打破封装,所以不能为了复用而无限制的进行集成。除了上述提到的情况之外,最好使用复合模式。因为这样能使子类在使用成员对象(而不是父类)更灵活,并不破坏封装性。

12. 接口优先于抽象类。

13. 接口中尽量屏蔽和业务相关的内容,尤其是尽可能的避免接口中常量的定义。

14. 优先考虑静态成员内部类,因为实例类的开销太大,并且需要持有非类的引用。

15. 如果有可能,检查方法的传入参数,避免在进行处理后再抛出异常使得错误非常难捕捉,但是也不能过度检验参数。

16. 方法参数个数避免过长。对于参数的类型优先使用接口。

17. 返回零长度数组而不是null,用于避免空指针的校验。

18. 熟悉和了解各种库,尽量使用库而不是自己重复造方法。

19. 如果需要精确的计算时,避免用float和double,而使用BigDecimal对象类型,尽管开销会比较大。

20. 避免在任意情况下使用字符串,作为参数的类型。

21. 注意字符串串联的性能。

22. 通过接口引用对象。

23. 避免甚至不用native method。

24. 谨慎进行优化,在性能优化前,必须做性能测试,不好的优化会使得程序性能更造,并有可能破坏原有的功能。

25. 对于可恢复的条件用检查异常,对于程序错误(ERROR)用运行时异常。因为ERROR有可能直接导致程序崩溃,而RuntimeException至少可以按照程序的正常流程走下去。

26. 尽量使用标准的异常类型。

27. 要活用异常转译:推荐的异常转译方向为 Error-->RuntimeException, RuntimeException-->CheckedException, Error-->CheckedException

28. 异常信息不能太笼统,应该包含参数在内的详细描述信息,使得出现问题方便查看。

29. (线程将另开篇幅介绍)

30. 对于实现序列化的类型,在做单例的时候,保证实现readReslove方法,确保反序列化时不每次产生新的对象。
分享到:
评论

相关推荐

    effective java 读书笔记

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

    effectiveJava的笔记

    以下是对《Effective Java》笔记中可能涉及的关键知识点的详细解读: 1. **单例模式**:书中强调了如何正确实现单例模式,推荐使用`enum`来创建线程安全且唯一的实例,避免传统双重检查锁定的潜在问题。 2. **构造...

    Effective-Java读书笔记

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

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

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

    java入门级学习笔记

    【Java入门级学习笔记】 ...总之,Java学习笔记旨在为初学者提供全面的学习路径,从基础知识到核心概念,再到实际应用,逐步构建扎实的Java编程基础。通过持续学习和实践,你可以逐渐掌握这门强大且多用途的语言。

    Effective Java.zip

    《Effective Java》是一本经典Java编程指南,作者是Joshua Bloch,这本书深入探讨了...以上内容仅是《Effective Java》各章节的部分知识点概述,书中还有更多关于Java编程的最佳实践和深入理解等待读者去发掘和学习。

    java学习书籍

    以下是一些关于Java学习书籍的知识点,这些书籍可以帮助你从入门到精通,全面提升你的Java编程技能。 1. **《Java核心技术卷》**:这套书籍通常分为两卷,卷I主要涵盖基础知识,如语法、数据类型、控制结构、类和...

    5本java学习用书

    让我们逐一探讨这些书籍及其在Java学习中的价值。 1. **《21天学通JAVA》**:这本书通常被推荐为初学者入门的读物,它以简洁易懂的方式介绍了Java的基础知识,包括语法、数据类型、流程控制、面向对象编程概念等。...

    java学习PDF下载地址全 百度云盘下载

    本资源集合提供了一份完整的“Java学习PDF”,旨在帮助学习者系统地理解和掌握Java编程。 这份PDF教程可能涵盖以下关键知识点: 1. **Java简介**:介绍Java的历史、特点、应用领域以及与其它编程语言的对比,使...

    java7hashmap源码-for-java:java学习笔记

    Java学习笔记 Effective Java Topic2:插件销毁对象 2. 多参数情况 使用重叠构造器; 使用Build模式【构建器】: new A.Build().set.set.build(); Build模式也适用于类层次结构 递归类型参数 /* * 递归类型参数: ...

    java8源码-esmusssein777.github.io:我的学习记录

    同时,`effectiveJava学习笔记`可能包含了对《Effective Java》这本书中最佳实践的学习心得,这本书对于提升Java编程技巧非常有帮助。Java 8的实战学习笔记则可能涵盖了将新特性应用到实际项目中的经验分享。通过...

    java-note:Java学习笔记

    Structure /src/main/java ... ├ effective_java Effective Java 中文第二版 ├ jvm 深入理解Java虚拟机:JVM高级特性与最佳实践 ├ lambda JAVA 8实战 ├ netty Netty权威指南 ├ oop ├ recursion

    JAVA学习百度云资料

    2. **2018年黑马程序员最新Java学习笔记**:这份笔记是由专业教师精心整理的,包含济南校区的精华教学内容,不仅覆盖了基础理论,还有实践案例,是学习过程中的重要参考资料。链接:...

    Java开源项目汇总.pdf

    * CS-Notes:Java学习笔记,涵盖了Java的基础知识、数据结构、算法、设计模式等。 * advanced-java:Java高级教程,涵盖了Java的高级知识、Java设计模式、Java框架和工具等。 Java实战 * miaosha:Java电商项目,...

    这些年学习JAVA的资源,包括工具和资源包

    比如Awesome Java集合了各种Java资源,Java-Interview提供了面试准备资料,JDK源码阅读笔记帮助理解Java内部机制,Java设计模式实现则涵盖了各种设计原则,而Java学习笔记提供了从JavaSE到JavaWeb的逐步学习路径。...

    drools学习笔记

    对于学习 drools 的初学者,理解这些基础概念至关重要,它们将帮助你构建复杂的规则系统,实现业务逻辑的自动化和智能化。在实际应用中,根据需求灵活运用这些特性,可以极大地提升软件系统的可维护性和扩展性。

    notes:JavaJava后端工程师的学习笔记https

    loveincode's notes 学习工作中的一些记录,收藏。 操作系统 , 编译原理 , 计算机网络 , 互联网协议... 常用数据结构与算法 Java 实现 数据结构 与 排序算法 ...Effective Java , HTTP权威指南 , Java

    leetcode题库-MyNote:`13的学习笔记

    的学习笔记 学习笔记与练习项目源码整理 The Only Easy Day Was Yesterday 编程语言 C 参考书籍 : 《c primer plus》 6th edition 书内习题答案总结 , 优秀源码赏析 快速平方根算法 kilo (1000行的源文本编辑器) ...

    下面是我对于JAVA学习的一些心得体会

    学习JAVA是一种深度探索的过程,它不仅要求我们掌握基础语法,还需要理解其...学习多元化的编程语言和文化,可以拓宽视野,使你在JAVA学习的道路上更加游刃有余。通过这些方法,相信你可以成为一名出色的JAVA开发者。

Global site tag (gtag.js) - Google Analytics