java性能优化读书笔记(1)

时间:2023-01-03 21:35:17

1.采用clone()方式创建对象

  java语言里面的所有类都默认继承自java.lang.Object,此类里有一个clone()方法:

   拷贝对象返回的是一个新的对象,而不是一个对象的引用地址;

   拷贝对象与用new关键字操作返回的新对象的区别是这个拷贝已经包含了一些原来对象的信息,而不是对象的初始信息。

工厂模式的实现:

反例

public static Credit getNewCredit(){
  return new Credit(); //创建一个新的Credit对象  
}

正例

使用clone()方法

private static Credit BaseCredit=new Credit();
public static Credit getNewCredit(){
  return (Credit)BaseCredit.clone();  
}

2.避免boolean判断

   boolean 一个字节 8位

反例

boolean method(String str){
  return str.endswith("a")==true;//判断字符串是否以a结尾
}

正例

boolean method(String str){
return str.endswith("a");
}

3.多用条件操作符

反例:

public int method(boolean isDone){
 if(isDone){
   return 0;
 }else{
   return 1;
  }
}

正例:

public int method(boolean isDone){
  return (isDone ?0:1);
}

4.静态方法替代实例方法

工具类

5.有条件的使用final字段

final告诉编译器该方法不会被重载

6.避免不必要的instanceof操作

7.避免在子类中存在父类转换

Object是所有类的父类

8.建议多使用局部变量

9.算法效率最高的方式--位运算

10.用一维数组替换二维数组

二维数组的访问速度优于一维数组,但二维数组占用的内存大于一维数组。

内存敏感时可以转换一下处理

11.布尔运算代替位运算

&&  || 

12.提取表达式优化

13.不要总是使用取反操作费 !

14.不要重复初始化变量

15.变量初始化过程思考

16.对象的创建、访问过程

17.在switch语句中使用字符串

18.数值字面量的改进

0b,0B还有_

19.优化变长参数的方法调用

@SafeVarargs

20.针对基本数据类型的优化

Integer.compare(x,y)

21.空变量