Java 程序优化:字符串操作、基本运算方法等优化策略(二)

五、数据定义、运算逻辑优化

多使用局部变量

  • 调用方法时传递的参数以及在调用中创建的临时变量都保存在 (Stack) 里面,读写速度较快。
  • 其他变量,如静态变量、等,都在实例变量 (heap) 中创建,读写速度较慢。

清单 12 所示代码演示了使用局部变量和静态变量的操作时间对比。

位运算代替乘除法

  位运算(>>    <<)是所有的运算中最为高效的。

一维数组代替二维数组 

JDK 很多类库是采用数组方式实现的数据存储,比如 ArrayList、Vector 等,数组的优点是随机访问性能非常好。一维数组和二维数组的访问速度不一样,一维数组的访问速度要优于二维数组。在性能敏感的系统中要使用二维数组,尽量将二维数组转化为一维数组再进行处理,以提高系统的响应速度。

减少循环次数

使用布尔逻辑运算符代替位运算符

if条件判断,使用&&  代替&(位运算)  使用||  代替|(位运算)

&&  ||  经过编译器优化,短路

使用 arrayCopy()
http://zhidao.baidu.com/link?url=QxxAn0ahwN5OM7_ZTmKkN17KnmMiZa7zqkVGccj_DkJ3-vvzTdlx4RTfSddGKUUEs3cBm7CCgLzowwoK45kRK_

http://mp.weixin.qq.com/s?__biz=MjM5NzMyMjAwMA==&mid=207904935&idx=1&sn=54e087dbe4ebd4aad9fac019754d1b37&scene=23&srcid=0903QQgf7yVkVI6Tbfrs8Pni#rd

时间: 2024-12-25 23:57:58

Java 程序优化:字符串操作、基本运算方法等优化策略(二)的相关文章

java入门学习笔记之2(Java中的字符串操作)

因为对Python很熟悉,看着Java的各种字符串操作就不自觉的代入Python的实现方法上,于是就将Java实现方式与Python实现方式都写下来了. 先说一下总结,Java的字符串类String本身定义了一些简单的字符串操作, 字符串常用操作有: 1. 取某一字符第一次出现/最后一次出现的索引 2. 取字符串某一位置的字符 3. 字符串截取 4. 去除首尾空格 5. 字符串字符替换 6. 判断两个字符串是否相等 7. 大小写转换 下面开始: 1.取某一字符第一次出现/最后一次出现的索引 JA

90 % Java 程序员被误导的一个性能优化策略

我们经常看到一些 Java 性能优化的书或者理念,说不要在循环内定义变量,这样会占用过多的内存影响性能,而要在循环外面定义.接触 Java 这么久以来,相信很多 Java 程序员都被这种代码性能优化策略所误导. 看下面两个示例,示例1在循环外定义变量,示例2是在循环内定义变量. /** * 循环外定义变量 */ private static void outer() { Javastack javastack = null; for (int i = 0; i < 10; i++) { java

java程序入口main()方法浅析

java程序入口main()方法浅析 main()方法的方法签名 public static void main(String[] args) 方法签名讲解 ?public修饰符:java类由java虚拟机(JVM)调用,为了没有限制可以自由的调用,所以采用public修饰符. ?static修饰符:JVM调用这个主方法时肯定不是先创建这个主类的对象,再通过对象来调用方法,而是直接通过该类来调用这个方法,因此需要使用static修饰符修饰这个类. ?void返回值:主方法被JVM调用,将返回值返

java file文件类操作使用方法大全

1.构造函数 [java] view plaincopy public class FileDemo { public static void main(String[] args){ //构造函数File(String pathname) File f1 =new File("c:\\zuidaima\\1.txt"); //File(String parent,String child) File f2 =new File("c:\\zuidaima",&quo

python字符串操作实方法大合集

python字符串操作实方法大合集,包括了几乎所有常用的python字符串操作,如字符串的替换.删除.截取.复制.连接.比较.查找.分割等,需要的朋友可以参考下: #1.去空格及特殊符号 s.strip().lstrip().rstrip(',') #2.复制字符串 #strcpy(sStr1,sStr2) sStr1 = 'strcpy' sStr2 = sStr1 sStr1 = 'strcpy2' print sStr2 #3.连接字符串 #strcat(sStr1,sStr2) sStr

利用Java程序将字符串进行排序与拼接

1.初始生成字符串的代码程序: package com.map.test; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; public class Test { /** * @param args */ public static List<Map<String, String>

Java 中的字符串 操作

package day01; import org.junit.Test; public class TestString { /** * 测试常量池 * * */ @Test public void testConstantPool(){ String str1 = "Hello"; // String str2 = "Hello"; //两个对象使用==进行比较,返回值为true 说明两个对象引用 指向的内存区域相同 System.out.println(str

java中两字符串比较--compareTo方法

java.lang.String.compareTo()方法比较两个字符串的字典,比较是基于字符串中的每个字符的Unicode值 String n1 = "1"; String n2 = "0.15656655856565"; String m1 = "a"; String m2 = "b"; String m3 = "b"; int compareTon = n1.compareTo(n2); int c

java程序 避免重复启动的方法

http://www.cppblog.com/biao/archive/2010/12/23/137254.html 1 package swingtest; 2 3 import java.io.File; 4 5 import java.io.RandomAccessFile; 6 7 import java.nio.channels.FileChannel; 8 9 import java.nio.channels.FileLock; 10 import java.util.concurr