JDK1.5新增特性

枚举、泛型、可变参数、注解、基本类型自动装箱拆箱、for循环增强

设计原则

设计模式都是由这些设计原则演变而来,所以只要掌握了这些原则,那设计模式也就不难理解,在日常工作中也就不自觉地会应用起来。

单一职责原则(SRP:一个类应该只有一个发生变化的原因。

开放封闭原则(OCP:软件实体应该对扩展开放,对修改关闭。

Liskov替换原则(LSP:子类型(subtype)必须能够替换掉它的基类型(base type)。

依赖倒置原则(DIP

a. 高层模块不应该依赖于低层模块。二者都应该依赖于抽象。

b.抽象不应该依赖于细节。细节应该依赖于抽象。

接口隔离原则(ISP):不应该强迫客户程序依赖并未使用的方法。

DRY:Don’t repeat yourself Principle。通过抽取公共部分放置在一个地方避免代码重复。

封装变化 (Encapsulate what varies

面向接口编程而不是实现(Code to an interface rather than to an implementation

优先使用组合而非继承(Favour Composition Over Inheritance

代码质量

1.       避免使用finalize方法
该方法是Java对C++程序员惯用的析构函数的妥协,对于资源的释放应该放在finally{}块中进行。

2.       避免创建不必要的对象
String s = new String(“string”); // 创建一个对象
String s = “string”; // 放入字符串常量池,其它地方直接引用常量池
优先使用静态工厂方法,如Boolean.valueOf(String),不要使用new Boolean(String)
进行计算时,优先使用基本类型(如:long)而不是装箱基本类型(如:Long),避免无意识的自动装箱。
在某些场景,使用包装类型会使程序更加清晰、简洁,以及某些特殊用途比如基本类型不能为null。通常JVM对于小对象的创建于销毁代价较低,但是如果是多次复用(比如1个1000次的循环),或者比较消耗资源的对象(数据库连接)应尽量重用,比如在循环外部创建对象避免循环内部多次创建,建立数据库连接池重用对象。

3.       警惕内存泄露

产生原因:
a.过期引用
如果类自己管理内存,程序员就应该警惕内存泄露问题。一旦元素被释放掉,则该元素中包含的任何对象引用都应该被清空,但并不是说所有用完的对象都要来一句obj = null。
b.缓存
应该设置缓存的有效期,使用后台线程定时删除过期的项。
c.监听器和其它回调
内存泄露通常很难预测,除非非常有经验,所以往往我们都是在运营阶段才去注意内存泄露,通常采用Heap剖析工具(Heap Profiler)检测。

覆盖equals方法
诀窍:
a.使用“==”操作符检查“参数是否为这个对象的引用”
b.使用instanceof操作符检查“参数是否为正确的类型”
c.把参数转换成正确的类型
d.对于关键字段,检查参数中的关键字段是否等同于被比较对象中的字段。

通用规定:

自反性(reflexive):a==a必返回true。
对称性(symmetric):如果a=b,那么b=a。
传递性(transitive):如果a=b,b=c,则a=c。
一致性(consistent):多次调用返回结果不变。

建议:

覆盖equals方法的同时,也必须覆盖hashCode方法。因为:相等的对象必须具有相等的hash code。HashMap的get方法,先判断hash值是否相等,再判断key是否为同一对象或者“相等”的对象。
if (e.hash == hash && ((k = e.key) == key || key.equals(k)))

return e.value;

作者:陈唐山

转载于:https://www.cnblogs.com/myfapiao/archive/2013/01/20/2868197.html

java 进阶(持续补充)相关推荐

  1. Java进阶学习 - Dubbo框架(持续更新中~~)

    Java进阶学习 - Dubbo框架 1.简介 Dobbo是一个高性能的RPC框架,解决了分布式钟的调用问题 优点:解决了分布式系统中互相调用问题 缺点:缺少统一管理的调度中心 2.为什么Dubbo说 ...

  2. Java进阶3 - 易错知识点整理(待更新)

    Java进阶3 - 易错知识点整理(待更新) 该章节是Java进阶2- 易错知识点整理的续篇: 在前一章节中介绍了 ORM框架,中间件相关的面试题,而在该章节中主要记录关于项目部署中间件,监控与性能优 ...

  3. JAVA进阶教学之(集合)

    目录 1.集合概述 2.集合存储的数据类型 3.不同的集合,底层都会对应不同的数据结构 4.集合继承结构图(部分接口和类) 5.Collection接口中常用的方法 6.Collection 集合迭代 ...

  4. 本地环境可以,生产环境不行(持续补充)

    "我本地是可以的啊,为什么生产上就不行了???" 上面那句话相信大家都有说过,现在似乎已经被戏称为"程序员最大的谎言",呵呵--我就来以我个人的遭遇来总结下教训 ...

  5. 小猿圈Java讲师分享开发9年Java进阶大全

    IT程序员每天都与代码拼死搏斗,加班已成为家常便饭,为了升职加薪还要夜以继日的学习,对于只会ctrl+c和ctrl+v的真的是很是惭愧呀,为了更好的引导正在学习java编程的小伙伴,今天我让小猿圈的J ...

  6. Java基础到Java进阶——Java小白的历练之路------从0到1,开卷!

    Java小白的历练之路------从0到1 title: Java Essay date: 2022-09-07 08:58:32 tags: Java notes 写在前面: 免责声明:本笔记来源自 ...

  7. 第十六讲 java进阶-API

    第十六讲 java进阶-重写equals方法的深度解读 1 接口的补充 接口为什么不能new对象?有没有必要new对象?或者是说如果能new对象,new出来的是什么东西?有什么内容,是否符合对象的特征 ...

  8. 小白学java进阶工程师路线图

    原标题:小白学java进阶工程师路线图 Java小白如何成长为Java大牛?这9点你做到了几点! 给刚进社会的程序员新生一个建议,想成为一个优秀的程序员,高级程序员,不能眼高手低,不能认为开发新项目, ...

  9. java进阶书籍推荐(不包括基础)

    java进阶书籍推荐(不包括基础) 个人认为看书有两点好处: 能出版出来的书一定是经过反复的思考.雕琢和审核的,因此从专业性的角度来说,一本好书的价值远超其他资料 对着书上的代码自己敲的时候方便 &q ...

  10. Java进阶专题(八) 设计模式之适配器模式、装饰者模式、观察者模式

    本章节将介绍:三个设计模式,适配器模式.装饰者模式和观察者模式.通过学习适配器模式,可以优雅的解决代码功能的兼容问题.另外有重构需求的人群一定需要掌握装饰者模式.本章节参考资料书籍<Spring ...

最新文章

  1. 我在兰亭这三年完结篇之离开
  2. CSS3 filter:drop-shadow滤镜与box-shadow区别
  3. Python基础教程(十三):JSON、练习题100题
  4. Direct2D (2) : 基本图形命令测试
  5. 教育管理系统——android家长客户端
  6. 第 4 章 GitHub 骚操作
  7. 获取properties文件的内容的几种方式
  8. 04年学计算机,2004年4月全国高等教育自学考试计算机网络与通信试题
  9. 离线语音识别_离线语音识别库_离线语音识别sdk - 云+社区 - 腾讯云
  10. HFSS - 半波偶极子天线的设计与仿真
  11. 【视觉运控一体机小课堂】三分钟实现图像颜色通道切换和RGB图转灰度图的功能
  12. BinaryFormatter serialization and deserialization are disabled within this application
  13. 电信IoT平台对接及使用
  14. omap 3530 SPI配置(MCSPI发送数据正常,读取数据全为0)
  15. Matlab中绘制颜色渐变曲线
  16. FreeRTOS中的任务堆栈溢出检测机制
  17. data单复数一样吗_data的复数形式是datas还是data?rt
  18. ubuntu18.04安装tbb library
  19. 大数据Hive(七):Hive的开窗函数
  20. [zz]2008好莱坞进口大片全扫描

热门文章

  1. 裸辞三个月后,哭诉亲身经历,建议还想换工作的Java程序员不要辞职
  2. XILINXPCIE关于xapp1052的仿真和使用
  3. CGAL-Triangulation中的单元和面的关系
  4. kali-linux快速安装教程
  5. 演讲实录丨胡郁 从“能听会说”到“能理解会思考”-以语音和语言为入口的认知革命...
  6. 《软件测试技术大全》(第二版)目录
  7. 【转】机器学习发展简史
  8. 【原创】彼得德鲁克《管理的实践》札记(九)
  9. 神舟K550D三系统(win10、OSX、Ubuntu)安装教程
  10. Special Adjustment Method