Java基础学习总结(93)——Java编码规范之代码性能及惯例
1、避免使用包装类构造函数
按照SUN公司的说明,使用自动装箱或静态工厂方法比使用new一个对象快3到4倍,该规则可以用在valueOf或其它静态工厂的调用中(如:Short、Integer, Long、Double, Byte 、Boolean等)。
推荐用valueOf()
2、面向接口编程时,推荐使用接口的声明方式
推荐使用接口声明方式
3、单个方法代码行数尽量保持在80-100行之内
4、数据库及磁盘IO等操作,必须在try-catch-finally块的finally中执行close()方法
如有多个对象需要关闭,则须分别对每个对象的close()方法进行try-catch,以防止出现一个对象关闭失败而导致其他对象都未关闭的情况出现
5、不要在循环体内进行数据库的“连接-关闭”操作
如有大批量的数据需要修改,建议使用PreparedStatement的Batch功能(一次性发送多个操作给数据库)
6、大量(如超过五次以上的“+=”运算)的字符串操作应使用StringBuilder或StringBuffer,尽量避免使用String
7、不要在循环条件中使用表达式
循环条件中避免使用表达式
8、应尽可能的以指明容量大小的方式对ArrayList进行实例化
public ArrayList();
默认的构造器,JAVA以10个元素的大小初始化
public ArrayList(int);
用指定的容量大小大小初始化
不指明容量大小时,如集合容量不够,则JAVA会以1.5倍的容量递增扩充,而且每次扩充,系统会重新拷贝一遍已经加入到ArrayList的数据,从而导致额外的内存开销。
9、集合中的数据如果不使用了应该及时释放
由于集合保存了对象的引用,虚拟机的垃圾收集器就不会回收
10、不要在循环体内声明变量
尽量避免在循环体内声明变量,因为每一个引用占4个字节。这样可以极大的减少新对象的创建数量,从而很大限度的减小内存开销。
不要在循环体内声明变量
11、非正常运行产生的异常被捕获后,必须对异常进行处理
在非finally块代码中catch的异常应该重新抛出经过封装的异常,在finally中再次catch的异常不应该再次抛出,应该写日志。无论是抛出异常还是记录日志,都要传递异常对象。日志应记录详细的描述信息,避免调用异常对象的getMessage()方法,直接将该异常对象作为参数传递。
12、尽量定位异常类型,不要一律catch(Exception ex)
当需要在某些出口捕获所有可能出现的运行时异常或Error时,可以catch Exception 或Throwable。
13、尽量避免一个方法中一个大的try块,catch一个Exception的代码方式,如果有必要可以使用多个try-catch块分别处理
14、不要将赋值运算符用在容易与相等关系运算符混淆的地方,如:
可读性很重要
类似的道理,我们可将“if (a == b && c == d)”改为可读性更强的“if ((a == b) && (c == d)) ”,可将“x >= 0 ? x : -x;"改为”(x >= 0) ? x : -x;“
Java基础学习总结(93)——Java编码规范之代码性能及惯例的更多相关文章
- java基础学习03(java基础程序设计)
java基础程序设计 一.完成的目标 1. 掌握java中的数据类型划分 2. 8种基本数据类型的使用及数据类型转换 3. 位运算.运算符.表达式 4. 判断.循环语句的使用 5. break和con ...
- java基础学习总结一(java语言发展历史、jdk的下载安装以及配置环境变量)
最近一段时间计划复习一下java基础知识,使用的视频课程是尚学堂高淇老师的,上课过程中的心得体会直接总结一下,方便以后复习. 一:计算机语言的发展 1:机器语言,最原始的语言,主要有“01”构成,最早 ...
- Java基础学习笔记一 Java介绍
java语言概述 Java是sun公司开发的一门编程语言,目前被Oracle公司收购,编程语言就是用来编写软件的. Java的应用 开发QQ.迅雷程序(桌面应用软件) 淘宝.京东(互联网应用软件) 安 ...
- Java基础学习总结(50)——Java事务处理总结
一.什么是Java事务 通常的观念认为,事务仅与数据库相关. 事务必须服从ISO/IEC所制定的ACID原则.ACID是原子性(atomicity).一致性(consistency).隔离性(isol ...
- JAVA基础学习——1.0 Java概述
Java语言 SUN公司 1995年推出的高级编程语言 ■ 主要应用方向 Web开发和Android开发 ■ 主要特点 平台无关性:能运行于不同的平台上 安全性:去掉了指针操作,内存由操作 ...
- Java基础学习笔记十 Java基础语法之final、static、匿名对象、内部类
final关键字 继承的出现提高了代码的复用性,并方便开发.但随之也有问题,有些类在描述完之后,不想被继承,或者有些类中的部分方法功能是固定的,不想让子类重写.可是当子类继承了这些特殊类之后,就可以对 ...
- java基础学习总结——哈希编码
一.哈希编码
- Java基础学习笔记八 Java基础语法之接口和多态
接口 接口概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”.接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成.这样将功能的定义 ...
- Java基础学习笔记六 Java基础语法之类和ArrayList
引用数据类型 引用数据类型分类,提到引用数据类型(类),其实我们对它并不陌生,如使用过的Scanner类.Random类.我们可以把类的类型为两种: 第一种,Java为我们提供好的类,如Scanner ...
随机推荐
- 双拓扑排序 HDOJ 5098 Smart Software Installer
题目传送门 /* 双拓扑排序:抄的,以后来补 详细解释:http://blog.csdn.net/u012774187/article/details/40736995 */ #include < ...
- h5-23-百度地图api
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name ...
- Nginx缓存[proxy cache、memcache]
nginx自带缓存 nginx自己有单独的进程来对磁盘上的缓存文件进行扫描,在内存中建立缓存索引.并且有管理进程来对缓存进行过期判断,更新等操作 定义:只能在http段中使用 proxy_cache_ ...
- [转]EntityFramework之领域驱动设计实践
本文转自:http://www.cnblogs.com/daxnet/archive/2010/11/02/1867392.html Entity Framework之领域驱动设计实践 EntityF ...
- 非常强大的前端插件:emmet
安装 Emmet 也有快速生成文件头的功能啊,而且更强大啊输入下边加粗的缩写,然后Tab,就OK了啊http://docs.emmet.io/cheat-sheet/ html:4t <!DOC ...
- PropTypes 和组件参数验证
我们来了到了一个非常尴尬的章节,很多初学的朋友可能对这一章的知识点不屑一顾,觉得用不用对程序功能也没什么影响.但其实这一章节的知识在你构建多人协作.大型的应用程序的时候也是非常重要的,不可忽视. 都说 ...
- iframe 完全跨域自适应高度
1.跨域访问页面, 需要访问后台的页面,通过后台调转 2.跨域自适应宽高 思路:通过相互嵌套,获取跨域页面的高度,通过src传回到本域,通过parent方法设置主页的iframe的高度 index ...
- BottomNavigationBar底部导航条用法
先来张效果图 接下来是实现过程 1.加入依赖 compile 'com.ashokvarma.android:bottom-navigation-bar:1.3.0' 2.xml布局 fragment ...
- 使用代码编辑器Sublime Text 3进行前端开发及相关快捷键
推荐理由: Sublime Text:一款具有代码高亮.语法提示.自动完成且反应快速的编辑器软件,不仅具有华丽的界面,还支持插件扩展机制,用她来写代码,绝对是一种享受.相比于浮肿沉重的Eclipse, ...
- android 代码中及xml中设置透明
在布局文件的属性中,比如要设置一个LineaerLayout的背景为灰色透明.首先查RGB颜色表灰色是:#9E9E9E,AA代表透明,(透明度从00到FF,00表示完全透明),所以,设置其属性:and ...