`

Java优化编程学习笔记一-----Java核心类与性能优化

阅读更多
一、散列表类与性能优化
线程同步散列表类
1.Vector 与ArrayList
对于线程安全而言,一些散列表核心类是线程安全的,如Vector类,一些核心类不是线程安全的,如ArrayList类。
原则:对线程安全有严格要求时,尽量选用线程安全的散列表类,在不要求的情况下,尽量选用非线程安全的散列表类,因为线程安全的散列表会将本来可以并行处理的任务的多线程进行排队。当这些线程试图并行访问该散列表对象时,会被转为串行处理。

2.设置ArrayList初始化容量
ArrayList给新添加的元素提供必要的存储空间,需要增加自身的内部数据结构,这个过程由系统自动完成。但如果数组很大,需要提高添加元素的性能
先看一个例子
public class SetArraySize{
    final int N = 1000000;
    Object obj=new Object();
    ArrayList list = new ArrayList();
    long startTime = System.currentTimeMills();
    for(int i=1; i<N; i++){
        list.add(obj);
   }
    long  endTime = System.currentTimeMills();

   System.out.println("没有ensucreCapacity耗时:"+ (endTime-startTime)     +ms);

    list = new ArrayList();
    long startTime = System.currentTimeMills();
    list.encrureCapacity(N);
    for(int i=1; i<N; i++){
        list.add(obj);
   }
    long  endTime = System.currentTimeMills();

   System.out.println("调用ensucreCapacity耗时:"+ (endTime-startTime)+ms);
}


  
运行结果:
   没有ensucreCapacity耗时:172ms
   调用ensucreCapacity耗时:63ms

提前调用ensucreCapacity,系统性能大大提高

3、ArrayList与LinkedList
ArrayList通过内部数组结构Object[]实现,而LinkedList通过一系列的内部记录连接在一起实现,不同场合的应用,性能差别较大
二、String类与性能优化

1.字符串累加与性能优化
StringBuffer.append累加字符串比 + 或+=累加性能高很多,数值越大,差别越大

2.字符串的lentht()与性能优化

在循环外就计算好字符串的长度int len=s.length(),不要在循环中用for(int i=0;i<s.length();i++).每循环一次都要计算长度,必然耗系统资源

3.toCharArray()

调用toCharArray()将字符串转为数组,通过数组索引值获取指定位置的字符,比用charAt()逐一获取特定位置的字符性能提高

4.字符串转为数字

d=new Double("8.97");
d=new Double(8.97); 第二种写法比第一种写法性能高很多倍

三.系统I/O类

1.通过系统缓冲流提高I/O操作效率
2.自定制缓冲区提高I/O操作效率
更大程度提升系统性能。
3.通过压缩流提高I/O操作效率
ZipOutputStream










0
0
分享到:
评论
2 楼 mercyblitz 2010-06-21  
引用
3.toCharArray()
调用toCharArray()将字符串转为数组,通过数组索引值获取指定位置的字符,比用charAt()逐一获取特定位置的字符性能提高


编译器方法内联之后,没有区别。
1 楼 mercyblitz 2010-06-21  
引用
#  list = new ArrayList(); 
#     long startTime = System.currentTimeMills(); 
#     list.encrureCapacity(N); 


改成#  list = new ArrayList(N); 

性能会更好。

相关推荐

    Socket网络编程学习笔记之---使用线程池提高性能

    本篇学习笔记将深入探讨如何结合Socket与线程池来提升程序的运行效率。 一、Socket基础 Socket,也称为套接字,是网络编程中的一个重要概念,它是进程间通信(IPC)的一种方式,特别是在网络环境中。Socket提供了一...

    Java学习笔记---15.面向对象编程10-Java中final关键字,抽象类与接口

    Java中的`final`关键字、抽象类和接口是面向对象编程中的核心概念,它们共同构建了类的层次结构和多态性。以下是对这些概念的详细解释: 1. **final关键字** - `final`关键字用于确保变量的值一旦被赋值后就不能...

    Java游戏编程读书笔记

    通过阅读《Java游戏编程读书笔记》这本书,你可以深入了解这些概念并学习如何将它们应用到实际项目中。文档中的内容可能涵盖了Java游戏开发的基本原理、代码示例、最佳实践以及常见问题的解决方案。通过深入学习和...

    JAVA学习经典笔记-----1

    - **类和对象的关系**:在Java中,类是用来定义对象的模板或蓝图,它描述了一组具有相同属性和行为的对象。对象是类的一个实例。例如,`Cat` 类可以看作是从 `Animal` 类继承而来的一个具体实现。 #### 示例分析: ...

    计算机Java核心编程学习笔记

    【Java核心编程知识点详解】 Java是一种广泛使用的面向对象的编程语言,其核心编程涉及许多重要概念,包括标识符、关键字、数据类型、流程控制、修饰符、动作、变量命名及作用域、语法基础、转义字符和数据类型等。...

    Java 学习笔记Java学习笔记

    Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现为Oracle公司的一部分)于1995年发布。...Java学习笔记涵盖了这些核心知识点,通过深入学习和实践,你可以逐步掌握Java编程,并应用于实际项目开发中。

    JAVA学习笔记-良葛格

    Java学习笔记主要涉及Java语言的历史背景、语言特点、应用平台和学习建议。以下是对这些内容的详细解析: ### Java语言的历史背景 Java起源于1990年代初的Sun公司(现为Oracle公司的一部分)的“绿色项目”计划,...

    韩顺平编写的java学习笔记(全)

    #### Java编程方向 - **Java SE (J2SE)**:桌面应用开发的基础。 - **Java EE (J2EE)**:Web应用开发。 - **Java ME (J2ME)**:移动设备应用开发。 #### Java SE课程内容 1. **面向对象编程**:Java的核心概念之...

    java学习笔记-html-ssh-js

    【Java学习笔记】 在Java的学习旅程中,深入理解其核心概念是至关重要的。Java是一种广泛使用的面向对象的编程语言,以其跨平台性、高效性和稳定性而受到青睐。本笔记集合将带你逐步走进Java的世界,从基础语法到...

    Java JDK 7学习笔记 PDF

    Java JDK 7是Java开发工具包的一个重要版本,它的全称是Java Development Kit,是用于构建和运行Java应用程序的关键组件。这个PDF学习笔记是开发者深入理解JDK 7特性和功能的重要参考资料。以下是对Java JDK 7的一些...

    java并发编程学习笔记

    ### Java并发编程学习笔记知识点详解 #### 一、Java并发编程概述 Java并发编程是指在Java应用程序中同时执行多个操作的技术。它通过多线程、线程池等机制实现资源的有效利用,提高程序运行效率。Java并发编程的...

    JAVA 笔记-------------------

    在Java编程语言中,有许多关键概念和特性是...这些基本概念构成了Java编程的核心,理解并熟练运用它们是成为合格的Java开发者的基石。在学习过程中,不断实践和理解这些知识点,将有助于初学者逐步提升自己的编程技能。

    java核心编程笔记-持续更新

    在Java编程中,理解核心概念和遵循良好的编程规范至关重要。下面我们将深入探讨这些知识点。 首先,Java的特点包括简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程和动态性。这些特性使得...

    java核心思想读书笔记

    从标题“java核心思想读书笔记”和描述可以看出,这份资料是作者结合《Java核心思想》一书和其他网络资源整理而成,适合不同水平的Java学习者,特别是初学者和有经验的工程师。 1. **Java的设计目标** - 不同于...

    Java基础 学习笔记 Markdownr版

    本学习笔记主要涵盖了Java的基础知识,包括面向对象、集合、IO流、多线程、反射与动态代理以及Java 8的新特性等方面,旨在帮助初学者或有经验的开发者巩固和提升Java编程技能。 1. 面向对象(OOP):Java的核心是...

    java学习笔记markdown

    【Java学习笔记Markdown版】是针对Java初学者和进阶者的一份详尽教程,以Markdown格式编写,便于阅读和整理。Markdown是一种轻量级的标记语言,它允许用户使用易读易写的纯文本格式编写文档,然后转换成结构化的HTML...

    core java I (java核心编程)学习笔记

    本笔记基于第5版第一部分(I)进行整理,旨在帮助读者深入理解和掌握Java编程的基础知识。 1. **Java环境搭建**:首先,我们需要安装Java Development Kit (JDK),设置好环境变量,包括JAVA_HOME、PATH和CLASSPATH...

    java基础核心学习笔记

    本学习笔记将深入探讨Java的核心概念,帮助你建立坚实的基础。 1. **Java语法基础** - 变量与数据类型:Java支持基本数据类型(如int、float、char)以及引用数据类型(如类、接口、数组)。变量声明必须指定类型...

    中信java培训资料------第一部分

    总之,这份【中信java培训资料------第一部分】为初学者提供了一个全面且系统的Java学习路径,通过这些文档和笔记,学习者可以逐步掌握Java编程的基础知识,为进一步深入学习和实践奠定坚实的基础。

Global site tag (gtag.js) - Google Analytics