`
lpn520
  • 浏览: 47214 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Java开发经验笔记

阅读更多
0.编程应该尽可能简单,以同样的方式实施同样的过程,不断积累惯用法,将其标准化。
 
1.考虑用静态工厂方法代替构造器,即getInstance()、newInstance()、valueOf() 等。
 
2.当类的构造器或者静态工厂中具有多个参数时,请选择Builder模式设计此类。
 
3.实现Singleton,除了用静态工厂方法+私有构造器外,还有一种更好的方法,即:单无素的枚举类型。
 
4.避免创建不必要的对象,要优先使用基本类型而不是装箱基本类型,要当心无意识的自动装箱。
 
5.当你应该重用现有对象的时候,请不要创建新的对象。
 
6.消除过期的对象引用,警惕在数组、缓存、监听器或其它回调中发生内存泄漏问题。
 
7.避免使用终结方法,不应该依赖终结方法来更新重要的持久状态,使用终结方法有一个非常严重的性能损失。
 
8.覆盖equals时请遵守通用约定,一旦违反了equals约定,当其他对象面对你的对象时,你完全不知道这些对象的行为会怎么样。
 
9.一个类型的任何重要属性也将适用于它的子类型,因此为该类型编写的任务方法,在它的子类型上也应该同样运行得很好。
 
10.始终要覆盖toString,提供好的toString实现可以使类用起来更加舒适。
 
11.谨慎地覆盖clone方法,考虑提供一个拷贝构造器或拷贝工厂代替clone方法。
 
12.永远不要让客户去做任何类库能够替客户完成的事情。
 
13.设计一个类时,应当尽可能地使每个类或者成员不被外界访问。
 
14.在公有类中,不应该直接暴露数据域,而应使用访问方法。
 
15.使类的可变性最小化,如果类不能被做成不可变的,也应该尽可能地限制它的可变性。
 
16.复合优先于继承,与方法调用不同的是,继承打破了封装性,只有当子类真正是超类的子类型时,才适合用继承。
 
17.设计一个超类时,超类的构造器决不能调用可被覆盖的方法。
 
18.接口优于抽象类,现有类可以很容易被更新,以实现新的接口。
 
19.接口应该只被用来定义类型,它们不应该用来导出常量。
 
20.用函数对象表示策略,函数指针的主要用途就是实现策略模式,在Java中要声明一个接口表示该策略。
 
21.不要在新代码中使用原生态类型,如果使用原生态类型,就失掉了泛型在安全性和表述性方面的所有优势。
 
22.泛型列表优先于数组。
 
23.优先考虑泛型,优先考虑泛型方法。
 
24.请用enum代替int常量。
 
25.不要使用枚举的序数导出与它关联的值,应该要将它保存在一个枚举成员变量中。
 
26.请用EnumSet代替位域,用EnumMap代替序数索引。
 
27.虽然枚举类型不可扩展,但可以通过实现接口,对它进行模拟扩展。
 
 
 
 
 
 
 
 
 
本博文会长期,持续的更新~~~:)
3
1
分享到:
评论

相关推荐

    我的java开发笔记(技术,经验)

    这份珍贵的压缩包文件,名为“我的java开发笔记(技术,经验)”,是作者长期在Java开发领域积累的宝贵资料,包含了个人的心得体会,丰富的技术文章,以及精选的经典面试问题,对于任何想要提升Java技能或者准备面试...

    Java开发学习笔记

    Java开发学习笔记主要针对的是初学者,旨在帮助他们掌握Java编程的基础知识。下面将详细讲解Java开发中的核心概念和步骤。 一、Java环境变量设置 在开始Java编程之前,我们需要安装Java Development Kit (JDK)并...

    达内Java 开发教学笔记整理合集

    达内Java 开发教学笔记整理合集: Unix 笔记 Core JAVA 笔记 OOAD思想 笔记 Oracle 笔记 JDBC 笔记 Hibernate 笔记 HTML&java script 笔记 Servlet 笔记 Jsp 笔记 Struts 1.2 笔记 Struts 2 笔记 Ajax 笔记 Spring ...

    java开发笔记.doc

    这份"java开发笔记.doc"文档涵盖了几个关键的Java Web开发技术,包括Servlet、JDBC、Hibernate以及Struts 1.X,还有JavaScript的基础知识。以下是对这些知识点的详细解释: 1. **Servlet**:Servlet是Java EE平台中...

    Java学习笔记&工作经验总结.rar

    2. **Java开发工作经验高级特性总结.pdf**: 随着对Java的深入学习,开发者会接触到更多的高级特性。这份文档可能涵盖了Java 8及更高版本的新特性,比如Lambda表达式、函数式接口、Stream API、Optional类、日期...

    JAVA项目开发笔记(JAVAEE)

    这笔记包括了JAVA项目开发的部分内容,我看了感觉还是比较好的,所以和大家分享下!

    java软件开发ppt和笔记

    在Java开发中,以下几个重要的知识点是必须掌握的: 1. **基础语法**:Java是一种面向对象的语言,其语法基于C++但进行了简化。基础语法包括变量、数据类型、运算符、流程控制语句(如if-else,for,while,switch-...

    李兴华java笔记

    10. **Java框架**:可能还会涉及到Spring、MyBatis等流行框架的应用,它们极大地简化了企业级Java开发。 通过对《李兴华Java实战经典笔记》的深入学习,读者不仅可以掌握Java编程的基础知识,还能了解到实际项目中...

    xiaobao---java开发编程笔记整理

    【标题】"xiaobao---java开发编程笔记整理"是一份由xiaobao编写的关于Java开发的综合学习资料,其中涵盖了Eclipse集成开发环境、Struts、Hibernate和Spring等多个关键技术和框架。这些技术在Java开发领域中占据着...

    java超强笔记

    然后,会逐步引导你进行Java开发环境的设置,包括JDK(Java Development Kit)的下载与安装,以及配置相关的环境变量,如JAVA_HOME、PATH等。 接着,笔记将深入讲解Java语法基础。这包括数据类型(如整型、浮点型、...

    (完整版)最全的java学习笔记(必看).pdf

    * 1.3 Java开发环境:Java开发环境包括Java Development Kit(JDK)、Eclipse、Myeclipse等。JDK是Java开发的基本工具包,提供了Java编译器、Java解释器、Java Archive工具等。 * 1.4 Java开发环境配置:Java开发...

    java李兴华学习笔记之Java常用类库

    ### Java李兴华学习笔记之Java常用类库 #### 一、课程介绍及知识点概览 根据提供的资料,“Java李兴华学习笔记之Java常用类库”这份文档来源于北京MLDN软件实训中心的教学资料,主要涵盖了Java编程语言中常用类库...

    狂神说JAVA的所有笔记.zip

    这份笔记是作者在深入研究JAVA编程过程中积累的宝贵经验,旨在帮助读者系统性地掌握JAVA这门强大的编程语言。 首先,笔记可能涵盖了JAVA的基础知识,如数据类型、变量、运算符、流程控制(if-else、switch-case、...

    java学习笔记markdown

    12. **Java 8及更高版本的新特性**:涵盖Lambda表达式、函数式编程、Stream API、日期时间API等Java新特性,这些都是现代Java开发不可或缺的部分。 通过学习这份Markdown版的Java学习笔记,不仅可以掌握Java编程的...

    java开发基础笔记

    java开发基础笔记,第一章。非常全面的总结,技术性文章。

    Java软件开发魔典资源库 学习笔记

    Java软件开发魔典资源库 学习笔记 Java软件开发魔典资源库 学习笔记 Java软件开发魔典资源库 学习笔记 Java软件开发魔典资源库 学习笔记 Java软件开发魔典资源库 学习笔记 Java软件开发魔典资源库 学习笔记 Java软件...

    java全套笔记 来自狂神说java笔录.zip

    JDK是Java开发工具包,它是学习和开发Java程序的基础。它包含了Java编译器(javac)、Java解释器(java)、Java文档生成器(javadoc)以及各种实用工具,如jar打包工具等。通过JDK,开发者可以编写、编译、运行和...

    韩顺平编写的java学习笔记(全)

    - **J2SE(Java 2 Platform, Standard Edition)**: 标准版Java开发平台,适用于桌面应用程序开发。 - **J2EE(Java 2 Platform, Enterprise Edition)**: 企业版Java开发平台,主要应用于服务器端应用开发,支持Web...

    MLDN Java web开发实战笔记pdf

    MLDN Java web开发实战笔记pdf,MLDN Java web开发实战笔记pdf,MLDN Java web开发实战笔记pdf,MLDN Java web开发实战笔记pdf

Global site tag (gtag.js) - Google Analytics