1.用if+return代替复杂的if...else(if+return)
public static void test1(String str) { if ("1".equals(str)) { System.out.println("输入的参数是1"); return; } if ("2".equals(str)) { System.out.println("输入的参数是2"); return; } if ("3".equals(str)) { System.out.println("输入的参数是3"); return; } System.out.println("你输入的不是123`````````"); // ...这里可以写不满足上述条件的处理 }
2.尽量减少对变量的重复计算(for循环的用法)
明确一个概念,对方法的调用,即使方法中只有一句语句,也是有消耗的,包括创建栈帧、调用方法时保护现场、调用方法完毕时恢复现场等。所以例如下面的操作:
for (int i = 0; i < list.size(); i++) {...}
建议替换为:
for (int i = 0, int length = list.size(); i < length; i++) {...}
这样,在list.size()很大的时候,就减少了很多的消耗
补充:
用第一种方法时进行非空验证:
for (int i = 0; list!=null && i < list.size(); i++) {...}
3.循环内不要不断创建对象引用
例如:
for (int i = 1; i <= count; i++) { Object obj = new Object(); }
这种做法会导致内存中有count份Object对象引用存在,count很大的话,就耗费内存了,建议为改为:
Object obj = null; for (int i = 0; i <= count; i++) { obj = new Object(); }
这样的话,内存中只有一份Object对象引用,每次new Object()的时候,Object对象引用指向不同的Object罢了,但是内存中只有一份,这样就大大节省了内存空间了。
4、尽量使用HashMap、ArrayList、StringBuilder,除非线程安全需要,否则不推荐使用Hashtable、Vector、StringBuffer,后三者由于使用同步机制而导致了性能开销
5.字符串变量和字符串常量equals的时候将字符串常量写在前面
String str = "123"; if (str!=null && "123".equals(str)) { ... }
这么做主要是可以避免空指针异常
6.任何数据在使用之前进行非空判断(包括对象,list)
List<Employeeexam> employeeInExams = exam.getEmployeeInExams(); List<Employeeexam> employeeOutExams = exam.getEmployeeOutExams(); boolean insertEmployeeResult = false; int in_size, out_size; in_size = employeeInExams != null ? employeeInExams.size() : 0; out_size = employeeOutExams != null ? employeeOutExams.size() : 0; Integer employeeNum = in_size + out_size;
7.if...else...语句用条件运算符
return examMapper.deleteByPrimaryKey(id) > 0 ? true : false;
result = examService.deleteExamById(examId) ? "删除成功!" : "删除失败!";
8.善于使用commons-io包和commons-lang包中的工具类
io包中FilenameUtils和IOUtils和FileUtils的使用
lang包中 StringUtils和NumberUtils的使用等。
9.线程休眠的另一种方法
try { TimeUnit.SECONDS.sleep(1); } catch (InterruptedException e) { e.printStackTrace(); }
10. 对一些properties配置文件,我们可以在SVN或者Git放一个其样本文件,具体的文件不添加到版本管理,这样不会造成开发小组的冲突。
比如:db.properties文件,我们创建一个db.sample.properties(类似于模板)文件并传到git,db.properties文件不添加索引即可。