浅谈JAVA代码优化
JAVA代码的优化分为两个方面:
一、减小代码的体积。二、提高代码的执行效率。
======================================================================================
一、减小代码的体积
1.如果要改动代码尽量集中在一处修改,例如要修改某些属性的值,可以写一个统一化的方法对属性进行修改。
2.如果有一个功能超过两次被使用,可以考虑把它封装一个静态的方法写在公共的Utils中。
3.如果有超过两个子类在某个函数中做了相似但又不同的操作,可以考虑将这个函数在父类中抽象化。
二、提高代码的执行效率
1.时间复杂度尽量要小(越少的loop嵌套,代码的执行效率越高)。写代码时可以多采用过滤的方式提取出目标数据,尽量不使用循环的方式提取。
2.写代码切勿相互依赖,尽量做到解耦(例如A Service中调用了B Service中的方法,同理B也调用了A,这样是不可以的)。
3.减少动态运算的语句,宁可浪费一点内存去处理数据,也不可让它动态运算浪费CPU。
4.减少对象的创建,由于JVM创建对象的时候会花费时间生成,当对象失效的时候JVM还会对其进行垃圾回收,例如对字符串的拼接尽量使用StringBuffer、if判断中对象的使用可以在判断中创建。如下代码:
//低效率的写法
List list = new ArrayList<>();
int[] arr = new int[]{0,1,5,8,15};
for(int i = 0; i <= arr.length; ++i;){
String name = new String("Jack");
if(arr[i]==i){
list.add(name);
}
}
//高效率的写法
List list = new ArrayList<>();
int[] arr = new int[]{0,1,5,8,15};
for(int i = 0, len = arr.length; i <= len; ++i;){
if(arr[i]==i){
String name = new String("Jack");
list.add(name);
}
}
5.如果成员变量和局部变量都能保证功能的实现,尽量使用局部变量。因为局部变量存储在栈中速度较快,成员变量存储在堆中速度较慢。
6.初始化变量时尽量不要写在循环中,如下代码:
//低效率的写法
for(int i = 0; i <= n; ++i){
String name = "Jack";
System.out.println(name);
}
//高效率的写法
String name = "Jack";
for(int i = 0; i <= n; ++i){
System.out.println(name);
}
7.数据库的连接和I/O流的操作,在完成使用后应当及时的进行关闭。
8.try catch不要写在循环的嵌套中,尽量写在循环的最外层,异常的使用要谨慎。
浅谈JAVA代码优化的更多相关文章
- 浅谈Java的throw与throws
转载:http://blog.csdn.net/luoweifu/article/details/10721543 我进行了一些加工,不是本人原创但比原博主要更完善~ 浅谈Java异常 以前虽然知道一 ...
- 浅谈Java中的equals和==(转)
浅谈Java中的equals和== 在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new String("hello"); 2 String str ...
- 浅谈Java中的对象和引用
浅谈Java中的对象和对象引用 在Java中,有一组名词经常一起出现,它们就是“对象和对象引用”,很多朋友在初学Java的时候可能经常会混淆这2个概念,觉得它们是一回事,事实上则不然.今天我们就来一起 ...
- 浅谈Java中的equals和==
浅谈Java中的equals和== 在初学Java时,可能会经常碰到下面的代码: String str1 = new String("hello"); String str2 = ...
- 浅谈JAVA集合框架
浅谈JAVA集合框架 Java提供了数种持有对象的方式,包括语言内置的Array,还有就是utilities中提供的容器类(container classes),又称群集类(collection cl ...
- 浅谈java性能分析
浅谈java性能分析,效能分析 在老师强烈的要求下做了效能分析,对上次写过的词频统计的程序进行分析以及改进. 对于效能分析:我个人很浅显的认为就是程序的运行效率,代码的执行效率等等. java做性能测 ...
- 浅谈Java中的深拷贝和浅拷贝(转载)
浅谈Java中的深拷贝和浅拷贝(转载) 原文链接: http://blog.csdn.net/tounaobun/article/details/8491392 假如说你想复制一个简单变量.很简单: ...
- !! 浅谈Java学习方法和后期面试技巧
浅谈Java学习方法和后期面试技巧 昨天查看3303回复33 部落用户大酋长 下面简单列举一下大家学习java的一个系统知识点的一些介绍 一.java基础部分:java基础的时候,有些知识点是非常重要 ...
- 浅谈Java中的深拷贝和浅拷贝
转载: 浅谈Java中的深拷贝和浅拷贝 假如说你想复制一个简单变量.很简单: int apples = 5; int pears = apples; 不仅仅是int类型,其它七种原始数据类型(bool ...
随机推荐
- day01-系统基础信息模块
前言:2015年,由于大规模采用云平台虚拟机部署应用,每套应用系统的MySQl.接口机.WEB服务器.文件服务器需要经常进行版本升级.配置更新.安全补丁加固.iptables调整.配置核实,大量的手工 ...
- ABBYY FineReader 15新增编辑页面布局功能
ABBYY FineReader 15(Windows系统) 新增编辑页面布局功能,允许用户修改PDF数字文档的页面布局,包括添加或者删除文字段落,文字块以及图片,更改段落,文字块,图片位置.添加或者 ...
- ABBYY FineReader 15 对比文档功能
想必大家在办公的时候都有着要处理各种各样文档的烦恼,一个文档经过一个人或不同人的多次修订都是常有的事,拥有文档对比功能的软件也就应势而生.ABBYY FineReader 15 有许多能够帮助我们办公 ...
- 分析一个免杀webshell发现的php特性
文章首发于t00ls,嫌文章太啰嗦的可以直接看结论 起源 之前看到别人分享的一个免杀webshell: <?php @$GLOBALS{next} = $GLOBALS[$GLOBALS[fun ...
- Linux高可用之Keepalived
1: 安装keepalived yum install -y keepalived ipvsadm 安装keepalived和LVS管理软件ipvsadm 主机与备机都需要安装 ######修改配置文 ...
- Java基础教程——反射机制
Java反射机制 Java反射机制是Java语言的一个重要特性,使得Java语言具备"动态性": 在运行时获取任意一个对象所属的类的相关信息; 在运行时构造任意一个类的对象: 在运 ...
- MySQL全面瓦解13:系统函数相关
概述 提到MySQL的系统函数,我们前面有使用过聚合函数,其实只是其中一小部分.MySQL提供很多功能强大.方便易用的函数,使用这些函数,可以极大地提高用户对于数据库的管理效率,并更加灵活地满足不同用 ...
- 2020年团体程序设计天梯赛-总决赛 L2-4 网红点打卡攻略
题目:一个旅游景点,如果被带火了的话,就被称为"网红点".大家来网红点游玩,俗称"打卡".在各个网红点打卡的快(省)乐(钱)方法称为"攻略" ...
- 怎么用Iometer测试存储性能
1.Disk Targets选项栏中选择要测试的磁盘,1 per target of Outstanding I/Os 保持默认即可. 2.在Access Specifications栏中新建测试条件 ...
- mysql给用户赋予所有权限
mysql给用户赋予所有权限(包括远程连接) 我们给mysql新创建的用户,希望它拥有更多权限,比如远程连接,方便我们操作,可以使用如下命令: GRANT ALL PRIVILEGES ON *.* ...