1、尽量指定类、方法的final修饰符
2、尽量重用对象、
3、及时关闭流
4、尽量使用局部变量,实例变量等创建是在堆中,效率较慢,局部变量在方法中创建,方法的运行结束消失而消失
5、减少变量的重复运算,比如在for循环中,调用size(),每次都要进行调用
6、尽量采用懒加载,在需要的时候创建
7、慎用异常
8、不要在循环中使用try catch
9、集合类等指定初始长度
10、当复制大量数据时,使用System.arraycopy()命令
11、循环内不要不断创建对象引用,
不推荐
for (int i = 1; i <= length; i++){
Object obj = new Object(); }
改为:
Object obj = null;for (int i = 0; i <= count; i++) { obj = new Object(); }
12、基于效率和类型检查的考虑,应该尽可能使用array,无法确定数组大小时才使用ArrayList
13、尽量使用HashMap、ArrayList、StringBuilder,除非线程安全需要,否则不推荐使用Hashtable、Vector、StringBuffer,后三者由于使用同步机制而导致了性能开销
14、不要将数组声明为public static final、
15、尽量避免随意使用静态变量、
16、使用同步代码块替代同步方法
17、将常量声明为static final,并以大写命名
这样在编译期间就可以把这些内容放入常量池中,避免运行期间计算生成常量的值。另外,将常量的名字以大写命名也可以方便区分出常量与变量
18、不要创建一些不使用的对象,不要导入一些不使用的类
19、程序运行过程中避免使用反射
20、使用数据库连接池和线程池
21、使用带缓冲的输入输出流进行IO操作
22、顺序插入和随机访问比较多的场景使用ArrayList,元素删除和中间插入比较多的场景使用LinkedList这个,理解ArrayList和LinkedList的原理就知道了
23、不要让public方法中有太多的形参
24、字符串变量和字符串常量equals的时候将字符串常量写在前面
这么做主要是可以避免空指针异常
25、不要对数组使用toString()方法
26、不要对超出范围的基本数据类型做向下强制转型
27、公用的集合类中不使用的数据一定要及时remove掉
28、把一个基本数据类型转为字符串,基本数据类型.toString()是最快的方式、String.valueOf(数据)次之、数据+””最慢
28、使用最有效率的方式去遍历Map
Map<String, String> map= new HashMap<String, String>(); map.put("111", "222"); Set<Map.Entry<String, String>> entrySet = map.entrySet(); Iterator<Map.Entry<String, String>> iter= entrySet.iterator(); while (iter.hasNext()){ Map.Entry<String, String> entry = iter.next(); System.out.println(entry.getKey() + "\t" + entry.getValue()); }
29、对资源的close()建议分开操作