当前位置: 首页 > news >正文

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

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.空变量

 

相关文章:

  • 栈大小和内存分部问题
  • linux系统部署mongodb数据库
  • CentOS6.5菜鸟之旅:安装SUN JDK1.7和Tomcat7
  • Strut2中的标签
  • 区块链应用 | 最全区块链生态图谱发布,一张图看清2400个典型项目
  • Holding Bin-Laden Captive!(母函数)
  • 页面中引入mui 地址选择,点击页面中其他input时页面回到顶部
  • [转载]MFC一个文档不同视图
  • apache2.2 虚拟主机配置
  • 【机器视觉与图像处理】基于MATLAB的角度计算
  • 【毕设进行时-工业大数据,数据挖掘】用C++对数据进行整改,修缮一下!
  • JDBC
  • 动画演示 Delphi 2007 IDE 功能[4] - 自定义界面
  • ASCSDK-------通用包接入文档(UNITY篇)
  • 内存管理[3]
  • CSS 提示工具(Tooltip)
  • css系列之关于字体的事
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • java8-模拟hadoop
  • Javascripit类型转换比较那点事儿,双等号(==)
  • Mithril.js 入门介绍
  • opencv python Meanshift 和 Camshift
  • PHP CLI应用的调试原理
  • SpringBoot 实战 (三) | 配置文件详解
  • SpringBoot几种定时任务的实现方式
  • SQLServer之创建数据库快照
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 面试遇到的一些题
  • 那些年我们用过的显示性能指标
  • 使用权重正则化较少模型过拟合
  • 问题之ssh中Host key verification failed的解决
  • 在weex里面使用chart图表
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (39)STM32——FLASH闪存
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (十三)Maven插件解析运行机制
  • (五)MySQL的备份及恢复
  • (转)h264中avc和flv数据的解析
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .gitignore文件设置了忽略但不生效
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .NET : 在VS2008中计算代码度量值
  • .NET Framework 4.6.2改进了WPF和安全性
  • .NET下ASPX编程的几个小问题
  • @cacheable 是否缓存成功_Spring Cache缓存注解
  • @拔赤:Web前端开发十日谈