原文地址:http://user.qzone.qq.com/1159340782/2

略微牺牲一些性能,换来更好的可读性和可维护性是好的选择。以下不提倡和提倡的写法仅供参考。

代码中不提倡的写法

序号

不提倡的写法

原因

1

尽量避免随意使用静态变量

静态变量和类同步,类不卸载,对象将常驻内存,直到程序终止

2

尽量避免过多过常的创建java对象

花费时间去创建对象,回收对象也是一种开销,尽量复用对象,用基本数据类型或数组代替对象。

3

尽量避免使用finalize方法

导致GC负担更大,程序效率更差

4

尽量避免变量的重复计算

如遍历数组的长度,一次计算即可

5

尽量避免不必要的创建

程序逻辑控制对象的创建

6

尽量避免使用二维数组

二维数组占用空间比一维数组多得多,大概10倍

7

尽量避免使用split

Split由于支持正则表达式,效率低,消耗大量资源,建议使用apache下的StringUtils.split频繁split缓存结果

8

尽量避免非常大的内存分配

内存连续,浪费资源

9

慎用异常

创建异常开销大,好在try-catch开销不大

10

尽量减少IO操作

IO消耗系统资源,尽量使用缓存

11

尽量避免不需要的instanceof操作

always true

12

尽量避免不需要的造型操作

--

13

对于boolean避免不必要的等式

Flag == true

代码中提倡的写法

序号

提倡的写法

原因

1

尽量在合适的场合使用单例

减轻加载的负担,缩短加载的时间,提高加载的效率

2

尽量使用final修饰符

寻找内联所有final方法,性能提高50%

3

尽量使用局部变量

实例变量和静态变量等都在堆中建立,速度慢,局部变量放在栈中,速度快

4

处理好包装类型和基本类型使用场景

包装类型属于对象在堆中创建,基本类型在栈中创建,有对象方面需要处理适用包装类型,其他提倡基本类型

5

慎用synchronized尽量减小synchronized方法

实现同步系统开销大,容易死锁。尽量适用方法同步代替代码块同步

6

尽量使用StringBuffer和StringBuilder进行字符串的拼接

尽量初始化StringBuffer和StringBuilder的长度,字符数组动态添加字符串

7

尽量用基本数据类型代替对象

如String str = “hello” String str = new String(“hello”); 后者还创建了一个字符数组

8

单线程尽量使用HashMap ArrayList

HashTable Vector等使用了同步机制,降低了性能

9

尽量合理的使用HashMap

多使用HashMap的构造方法,初始化它的大小,扩容是一件很耗费性能的事情

10

尽量在finally块中释放资源

避免资源泄漏

11

尽量使用位运算取代a/b,a*b操作

/是一个代价很高的操作

12

尽量早释放无用的对象

Obj =null

13

合理使用arrayList和linkedList

一个是线性表(查询),一个是链表(添加和删除),

14

尽量使用System.arraycope复制数组

比循环复制数组要快得多

15

尽量缓存经常使用的对象

HashMap,WeekHashMap或者第三方的工具EhCache OsCache Memcached

16

大对象尽量用clone()不用new

new创建对象成本大

17

尽可能地使用java自身提供的api

不解释

18

使用快速度的jdbc驱动

数据库连接池

19

缓存DataSorce

为了再次的JNDI调用,可以系统中缓存要使用的DataSorce

20

让访问实例内变量的setget方法变成final

可变成inlined

21

charat代替startswith

--

22

如果只有一个字符的’’代替””

--

23

常量字符串,用String代替StringBuffer

减小运行开销提高性能

24

Stringtokenizer代替indexof substring

Stringtokenizer分析字符串更容易,效率也会高一些

25

使用三目运算代替if-return else

--

JAVA--养成好的编程习惯的更多相关文章

  1. 04 学习java养成良好的写作习惯

    1, 驼峰命名法 首字母大写 2, 写的时候大小中括号都补全,不忘记分号 不要都放在一行上 3, 缩进对其,tab键 4, 严格要求自己,养成良好的写作风格 5, javadoc可以将文档注释,直接生 ...

  2. java的编程习惯影响程序性能

    在Java程序中,性能问题的大部分原因并不在于Java语言,而是在于程序本身. 养成良好的编程习惯非常重要,能够显著地提升程序性能. 尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时 ...

  3. 已看1.熟练的使用Java语言进行面向对象程序设计,有良好的编程习惯,熟悉常用的Java API,包括集合框架、多线程(并发编程)、I/O(NIO)、Socket、JDBC、XML、反射等。[泛型]\

    1.熟练的使用Java语言进行面向对象程序设计,有良好的编程习惯,熟悉常用的Java API,包括集合框架.多线程(并发编程).I/O(NIO).Socket.JDBC.XML.反射等.[泛型]\1* ...

  4. python 编程,应该养成哪些好的习惯

    python 编程,应该养成哪些好的习惯? https://www.zhihu.com/question/28966220 无缓冲输出 python -u  sys.stdout.flush() 性能 ...

  5. 养成这8个编程习惯,你的Python性能将蹭蹭蹭地往上涨

    Python不以性能见长,但掌握一些技巧,也可尽量提高程序性能,避免不必要的资源浪费. 1. 使用局部变量 尽量使用局部变量代替全局变量:便于维护,提高性能并节省内存. 使用局部变量替换模块名字空间中 ...

  6. 养成良好的C++编程习惯(持续更新)

                    c++语言的灵活是建立在对编程者个人的编程素质的严格要求基础上的,好的C++编程习惯能避免很多问题. 没有好的编程习惯,极有可能编写一行代码,编译器能报十几个错误,而且 ...

  7. J2EE开发时的包命名规则,养成良好的开发习惯

    代码编写规范目的:能够在编码过程中实现规范化,为以后的程序开发中养成良好的行为习惯.代码编写规范使用范围:J2EE项目开发.包命名规范:目的:包的命名规范应当体现出项目资源良好的划分 servlet类 ...

  8. 提高万恶的KPI,切忌要避开这六个低效的编程习惯

    作者:程序员小跃 Slogan:当你的才华还无法撑起你的野心时,那应该静下心来好好学习 上次的翻译,引起了很大的反响,大家都想知道自己和高级工程师的差距,看了我的文章,是不是都在默默地做着比较呢?如果 ...

  9. 养成一个SQL好习惯带来一笔大财富

    我们做软件开发的,大部分人都离不开跟数据库打交道,特别是erp开发的,跟数据库打交道更是频繁,存储过程动不动就是上千行,如果数据量大,人员 流动大,那么我么还能保证下一段时间系统还能流畅的运行吗?那么 ...

  10. 增加 Java 有几个好习惯表现

    以下是一些参考网络资源中的摘要Java编程在一些地方尽可能做. 1. 尝试使用单个例如在合适的场合 使用单例可以减轻负荷的负担,缩短加载时间.提高装载效率,但并不是所有的地方都适合一个案例.简单的说, ...

随机推荐

  1. 廖雪峰Java13网络编程-1Socket编程-1网络编程概念

    1.计算机网络 1.1 什么是计算机网络? 两台或更多计算机组成的网络 同一网络内的任意2台计算机都可以直接通信 所有计算机必须遵循同一种网络协议 1.2 什么是互联网 互联网是网络的网络 互联网采用 ...

  2. 如何使用C++获取 进程的 绝对路径

    DWORD GetProcessId(IN PCHAR szExeName) { DWORD dwRet = 0; DWORD dwCount = 0; HANDLE hSnapshot = Crea ...

  3. 第九章 Odoo 12开发之外部 API - 集成第三方系统

    Odoo 服务器端带有外部 API,可供网页客户端和其它客户端应用使用.本文中我们将学习如何在我们的客户端程序中使用 Odoo 的外部 API.为避免引入大家所不熟悉的编程语言,此处我们将使用基于 P ...

  4. Jeecg-Boot前后端分离,针对敏感数据,加密传递方案

    # 针对敏感数据,加密传递方案 第一步: 在vue页面引入aesEncrypt.js encryption方法.示例代码: import { encryption } from '@/utils/en ...

  5. Spark-内存管理调优

    这篇文章主要是对官网内容学习过程的总结,大部分是原文,加上自己的学习笔记!!! spark 2.0+内存模型 调优内存使用时需要考虑三个因素: 对象使用的内存数量(您可能希望您的整个数据集都能装入内存 ...

  6. jsp页面判断当前请求的host

    需要引入<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> ...

  7. ArrayBlockingQueue的使用案例:

    ArrayBlockingQueue的介绍: ArrayBlockingQueue,顾名思义:基于数组的阻塞队列.数组是要指定长度的,所以使用ArrayBlockingQueue时必须指定长度,也就是 ...

  8. BMP 图片格式

     BMP根据颜色深度,可以分为2(1位).16(4位).256(8位).65536(16位)和1670万(24位)以及32位含有alpha通道.8位图像可以是 索引彩色图像外,也可以是灰阶图像,而索引 ...

  9. MathType插件安装

    1 安装包下载 版本号:7.4 下载 提取码:fxma 2 安装方法 用安装包内的Key激活即可.软件激活后不能升级. 注意:必须断网或者加入防火墙阻止联网使用! 3 可能遇到的问题 当安装完Math ...

  10. BaseController 的使用

    为了提现代码的高可用性,我们可以常见的把dao层进行抽取,service ,但是很少看见有controller的抽取,其实dao层也是可以被抽取的. 首先我们定义一个BaseController接口 ...