JAVA代码上优化性能的方法

1.return 一个空的集合,而不是 null

如果一个程序返回一个没有任何值的集合,请确保一个空集合返回,而不是空元素。这样你就不用去写一大堆 ”if else” 判断null元素    可以返回Collections.EMTY_LIST  或EMTY_SET EMTY_MAP

 

2.字符拼接的时候少用String  可以用StringBuilder或者StringBuffer,使用String时少用new

 

3.将对象定义在循环外面,在循环内实例化

 

4.数组和集合的选择,长度规定使用数组 经常删除和添加的话使用LinkedList

 

5.try catch finally 优化:

1> try、catch、finally语句中,在如果try语句有return语句,则返回的之后当前try中变量此时对应的值,此后对变量做任何的修改,都不影响try中return的返回值

2> 如果finally块中有return 语句,则返回try或catch中的返回语句忽略。

3 >如果finally块中抛出异常,则整个try、catch、finally块中抛出异常

所以使用try、catch、finally语句块中需要注意的是

1> 尽量在try或者catch中使用return语句。通过finally块中达到对try或者catch返回值修改是不可行的。

2 >finally块中避免使用return语句,因为finally块中如果使用return语句,会显示的消化掉try、catch块中的异常信息,屏蔽了错误的发生

3 >finally块中避免再次抛出异常,否则整个包含try语句块的方法回抛出异常,并且会消化掉try、catch块中的异常

6.奇数判断  使用  (num&1)!=0    

因为如果一个数是偶数的话那么它二进制的最后一位就是0,这样判断的话 前面的num只有二进制最后一位是1才返回为1,这就是: 偶数&1为0,奇数&1为1  

7. 单引号和双引号之间的区别

结果为201201,原因是,如果使用双引号,字符串对待,但在单引号的情况下,字符自动转换为int型,进行计算。

 

8.通过简单的技巧避免内存泄漏   finally块中释放使用的资源

 

9.三种用于避免死锁的技术:

1>加锁顺序

2>加锁时限

3>死锁检测

一个更好的方案是给这些线程设置优先级,让一个(或几个)线程回退,剩下的线程就像没发生死锁一样继续保持着它们需要的锁。如果赋予这些线程的优先级是固定不变的,同一批线程总是会拥有更高的优先级。为避免这个问题,可以在死锁发生的时候设置随机的优先级。

 

10.JAVA运行内存的设置

一些java应用程序可以被高度的CPU密集型以及他们需要很多内存。这样的应用程序通常运行速度慢,因为内存高的要求。所以,我们可以在相关的配置文件中进行修改调整内存大小。

Xms = 设置内存初始化的大小

Xmx = 设置最大能够使用内存的大小

XX:PermSize =初始大小,将分配给JVM的启动过程

XX:MaxPermSize = 最大尺寸可以分配JVM的启动过程

 

11.时间选择 :  循环中用System.nanoTime 因为精度高,平时用System.currentTimeMillis()能和data转换

12.float和double   要性能和内存用float,要精度高用double

13.用<<和>>代替乘除 num>>x理解为num除以2的x次方 num<<x为num乘以2的x次方(二进制位移)

猜你喜欢

转载自blog.csdn.net/qq_41594146/article/details/84888939