Java编程提高性能的方法
编程技巧:提高程序性能的10个方法

编程技巧:提高程序性能的10个方法"好的程序性能可以大大提高用户体验和系统效率。
通过一些简单的优化和技巧,我们可以显著提高程序的性能。
本文将介绍10个提高程序性能的方法,帮助你编写更高效的代码。
"1. 使用合适的数据结构选择合适的数据结构对程序的性能至关重要。
不同的数据结构在不同的操作中表现也不相同。
例如,使用数组访问元素比使用链表更高效,因为数组的元素在内存中是连续存储的,而链表则需要通过指针来访问。
当需要频繁进行查找操作时,使用哈希表可以提高查找的速度。
2. 减少内存分配频繁的内存分配和释放会影响程序的性能。
尽量避免使用过多的动态内存分配,可以通过提前分配足够的内存空间来减少运行时的内存分配。
另外,及时释放不再使用的内存也是提高性能的一个关键点。
3. 使用适当的算法和数据结构合适的算法和数据结构可以显著提高程序的性能。
一些常见的算法和数据结构如排序算法、查找算法、堆、树等都有不同的优劣势。
选择合适的算法和数据结构可以大大减少程序的运行时间和资源消耗。
4. 避免过多的循环和递归过多的循环和递归会导致程序性能下降。
尽量避免嵌套循环的使用,可以通过优化算法或使用其他数据结构来减少循环次数。
避免过深的递归也可以提高性能,可以考虑使用迭代代替递归。
5. 减少系统调用和IO操作系统调用和IO操作是程序中的开销比较大的操作。
减少不必要的系统调用和IO操作可以显著提高程序的性能。
例如,可以将多次IO操作合并为一次,减少磁盘的读写次数。
6. 使用多线程或并行处理多线程和并行处理可以充分利用多核处理器的性能,提高程序的并发性和并行性。
通过将任务拆分成多个子任务并行执行,可以显著提高程序的性能。
但是在使用多线程或并行处理时,需要考虑线程之间的同步和资源竞争的问题。
7. 优化关键代码段对关键的代码段进行优化可以大大提高程序的性能。
通过减少不必要的操作、使用更高效的算法、减少内存访问次数等方式可以对代码进行优化。
优化代码运行速度的方法与技巧

优化代码运行速度的方法与技巧优化代码运行速度是提高程序性能的重要任务之一。
下面是一些可以帮助你提升代码性能的方法和技巧。
1.选择合适的数据结构:不同的数据结构在不同的操作和查询方面有不同的效率。
选择最适合你的需求的数据结构,可以显著提高代码的性能。
2.使用更高效的算法:选择更高效的算法可以使代码更加快速和高效。
例如,排序算法的选择对性能有很大的影响。
3.减少循环次数:避免不必要的循环嵌套和重复计算。
尽量以最少的循环次数完成任务。
4.避免不必要的函数调用:函数调用时会有一定的开销。
如果可以避免不必要的函数调用,可以提高代码性能。
5.使用位运算代替乘除法运算:乘除法运算通常比位运算慢。
在合适的场景下,可以使用位运算代替乘除法运算,提高代码性能。
6.使用缓存进行优化:利用缓存机制,将频繁使用的数据存储在缓存中,减少访问内存的开销,提高代码性能。
7.避免过多的内存分配和释放:频繁的内存分配和释放会影响代码的性能。
尽量减少内存分配和释放的次数,可以使用对象池或者复用对象的方式来减少内存的开销。
8.使用并行计算:利用多线程或者并行计算框架,将计算任务分解成多个子任务并行执行,提高代码的运行速度。
9.减少磁盘和网络I/O操作:磁盘和网络I/O操作通常是程序性能的瓶颈之一。
减少对磁盘和网络的读写操作,可以提高代码的性能。
10.使用编译器优化选项:不同的编译器有不同的优化选项,可以根据编译器的不同选择合适的优化选项,提高代码的性能。
11.减少异常的使用:异常处理会有一定的开销。
在合适的场景下,可以减少异常的使用,提高代码性能。
12.使用缓存优化数据库操作:频繁的数据库查询和更新会影响代码的性能。
可以使用缓存机制来减少对数据库的访问,提高代码性能。
13.避免过度优化:过度的代码优化可能会导致代码复杂度增加,可读性和可维护性下降。
在优化代码时,需要平衡代码性能和代码质量之间的关系。
总结起来,优化代码运行速度需要考虑多个因素,包括选择合适的数据结构和算法、减少不必要的循环和函数调用、使用位运算和缓存优化、并行计算、减少磁盘和网络I/O操作等。
Java框架的性能优化技巧

Java框架的性能优化技巧Java框架在开发过程中,性能优化是一个至关重要的方面。
良好的性能可以提升应用程序的响应速度和并发能力,提高用户的体验。
本文将介绍一些Java框架的性能优化技巧,帮助开发者更好地提高应用程序的运行效率。
一、合理选择Java框架选择适合项目需求的Java框架是性能优化的第一步。
不同的框架在处理性能上可能会有所差异。
在选择框架时,要考虑框架的稳定性、易用性以及其在性能方面的表现。
二、优化数据库访问数据库访问是大多数应用程序的瓶颈之一。
以下是一些优化数据库访问的技巧:1. 使用批处理:将多个数据库操作合并为批处理操作,减少往返数据库的次数。
2. 使用索引:对常用的查询字段创建索引,可以加快查询速度。
3. 优化SQL查询语句:避免使用“select *”来查询所有字段,只查询需要的字段。
避免使用复杂的连接查询和子查询。
三、优化内存管理Java框架的内存管理也是一个关键因素。
以下是一些优化内存管理的技巧:1. 避免内存泄漏:确保在不再需要对象时及时释放资源,避免对象无法释放造成的内存泄漏。
2. 使用合适的缓存策略:合理使用缓存可以减少对数据库的频繁访问,提高性能。
但同时要注意缓存的更新和失效机制。
3. 垃圾回收优化:了解垃圾回收机制,根据项目需求调整垃圾回收的参数。
四、多线程并发控制Java框架常常需要处理大量的并发请求。
以下是一些多线程并发控制的技巧:1. 合理使用线程池:使用线程池可以避免多线程频繁创建与销毁的开销,提高性能。
2. 避免线程安全问题:在多线程环境中,要注意共享资源的线程安全问题,避免出现竞态条件和死锁等问题。
3. 异步处理:对于一些耗时的操作,可以使用异步处理来减少主线程的阻塞,提高并发能力。
五、代码优化优化框架代码本身也是提高性能的关键。
以下是一些代码优化的技巧:1. 减少对象创建:避免频繁创建无用的对象,尽量复用已有的对象,减少垃圾回收的压力。
2. 使用高效的数据结构和算法:选择合适的数据结构和算法可以提高代码的执行效率。
JAVA提高代码效率的方法

JAVA提高代码效率的方法Java是一种高性能语言,但是在编写代码时,我们仍然可以使用一些技巧来提高代码效率。
以下是一些提高Java代码效率的方法:1.使用合适的数据结构:选择正确的数据结构可以显著提高代码效率。
例如,如果需要频繁地进行插入和删除操作,使用链表比使用数组更高效。
如果需要快速访问元素,使用哈希表或树结构。
2.减少循环嵌套:嵌套循环是代码效率低下的一个常见原因。
尽量避免多层嵌套的循环,并考虑使用更高效的算法来处理问题。
3. 使用StringBuilder代替String拼接:在Java中,String对象是不可变的,每次对字符串进行拼接操作都会创建一个新的String对象,这会导致大量的内存分配和垃圾回收。
使用StringBuilder可以避免这个问题,并显著提高字符串拼接的效率。
4.使用局部变量:在循环中,将需要频繁访问的对象保存为局部变量可以减少访问成员变量的开销。
这是因为局部变量存储在栈中,而成员变量存储在堆中。
5. 缓存计算结果:对于一些需要重复计算的结果,可以将其缓存起来以避免重复计算。
这可以通过使用HashMap或其他缓存机制来实现。
6.懒加载:延迟加载是一种在需要时才创建对象的技术。
这可以减少内存的使用和对象的创建时间,并提高代码的效率。
7. 使用并发集合:当多个线程同时访问和修改集合对象时,使用并发集合(如ConcurrentHashMap、CopyOnWriteArrayList等)可以提高代码效率和线程安全性。
8. 使用原生数据类型:原生数据类型(如int、float、long等)在处理大规模数据时比对象类型更高效。
避免将原生类型包装为对象类型,尽量使用原生类型进行计算。
9.避免使用过多的异常处理:异常处理是一种开销较高的操作。
在一些性能要求较高的场景中,尽量避免频繁抛出和捕获异常。
10.减少输入输出:输入输出(IO)是代码效率的一个瓶颈。
可以使用批量读写、缓冲流等技术来减少IO操作的次数。
《Java性能调优指南》

《Java性能调优指南》随着互联网的飞速发展,Java作为一种重要的编程语言,被越来越广泛地应用于各个领域。
但是,Java程序的性能问题也随之出现。
如何调优Java 程序的性能,成为了每个开发人员需要解决的难题。
本文将为大家介绍Java性能调优的指南。
一、JVM参数设置JVM(Java虚拟机)参数设置是Java性能调优的关键。
JVM有众多的参数,不同的参数设置会对Java程序的性能产生不同的影响。
常用的JVM参数设置包括以下几个方面:1. 内存设置内存是Java程序的一大瓶颈。
如果内存设置不合理,会导致Java程序频繁地进行垃圾回收,造成程序的延迟和不稳定。
在设置内存参数时需要注意以下几点:- -Xmx: 最大堆内存,设置合理的最大堆内存大小可以减少JVM的垃圾回收次数,提高程序性能。
- -Xms: 初始堆内存,设置合理的初始堆内存大小可以加快程序启动时间,提高程序性能。
- -XX:NewRatio: 新生代与老年代的比例,如果设置得当,可以减少垃圾回收的次数。
通常新生代的大小为总堆容量的1\/3或1\/4,老年代的大小为总堆容量的2\/3或3\/4。
2. 垃圾回收设置垃圾回收是Java程序中必不可少的一部分。
合理的垃圾回收参数设置可以提高程序性能。
常用的垃圾回收参数设置包括以下几点:- -XX:+UseParallelGC: 使用并行GC,适用于多核CPU。
- -XX:+UseConcMarkSweepGC: 使用CMS GC,适用于大型Web应用程序。
- -XX:+UseG1GC: 使用G1 GC,适用于大内存应用程序。
3. JIT设置JIT(即时编译器)是Java程序中非常重要的一部分。
合理的JIT参数设置可以提高程序的性能。
常用的JIT参数设置包括以下几点:- -XX:+TieredCompilation: 启用分层编译,可以提高程序启动时间和性能。
- -XX:CompileThreshold: JIT编译阈值,设置JIT编译的最小方法调用次数,可以提高程序性能。
编程技巧提高代码性能的10个技巧

编程技巧提高代码性能的10个技巧代码性能对于程序的运行效率和用户体验至关重要。
通过一些简单的技巧和方法,可以有效提高代码的性能。
下面是提高代码性能的10个技巧:1.使用合适的数据结构:选择合适的数据结构对于代码的性能至关重要。
例如,当需要频繁插入和删除元素时,使用链表而不是数组可以提高性能。
2.减少函数调用:函数调用会产生额外的开销,因此减少函数调用可以提高代码性能。
可以将一些简单的操作内联到调用的地方,或使用递归替代迭代。
3.避免不必要的循环:避免不必要的循环可以减少代码的执行时间。
可以通过合理的条件判断或使用缓存结果来避免重复的计算。
4.减少内存分配:频繁的内存分配和释放会导致内存碎片化和性能下降。
可以尽量使用栈而不是堆来分配内存,或者使用对象池和缓存来重复使用已分配的内存。
5.使用合适的算法和数据结构:选择合适的算法和数据结构可以大大提高代码的性能。
例如,对于查找和排序操作,使用哈希表和二叉树比线性和冒泡排序更高效。
6.并行化和异步化:利用并行化和异步化可以提高代码的并发性和响应性。
可以将任务分解为多个子任务,并使用多线程或异步编程来并行执行。
7.懒加载和延迟加载:使用懒加载和延迟加载可以提高程序的启动和加载性能。
只有在需要时才加载或初始化对象、模块或资源。
8.数据预处理和缓存:对于一些长时间不变的数据,可以预先进行处理或缓存,避免重复的计算或读取操作,从而提高代码性能。
9.优化关键路径:通过分析程序的关键路径,优化其中的性能瓶颈可以获得显著的性能提升。
可以使用性能分析工具来找出瓶颈并优化代码。
10.减少资源的使用:减少资源的使用可以提高代码的性能和资源利用率。
可以避免内存泄露、关闭不必要的连接、释放文件句柄等。
通过应用上述技巧,可以有效提高代码的性能。
然而,要注意在优化代码性能时要权衡代码的易读性和可维护性,避免过度优化和牺牲其他方面的需求。
如何开发更有效率的Java程序

如何开发更有效率的Java程序Java作为一门功能强大的编程语言,广泛应用于各种应用程序的开发中。
然而,在面对复杂的开发需求时,经常遇到效率上的瓶颈。
本文旨在探讨如何开发更有效率的Java程序,从代码设计、优化、测试等角度出发,提高Java程序开发的效率和质量。
一、代码设计良好的代码设计是开发高效Java程序的关键。
在设计代码时,必须从以下几个方面出发考虑:1.选择正确的数据结构和算法Java有着丰富的数据结构和算法库,使用正确的数据结构和算法可以提高程序的性能。
在选择数据结构和算法时应根据实际需求进行评估,避免使用过于复杂的算法和数据结构。
2.模块化设计将代码分解为多个独立的模块可以提高代码的可维护性和复用性。
在模块化设计时,应注意模块之间的耦合,避免出现过度依赖的情况。
3.合理的注释注释是代码可读性的重要组成部分,良好的注释可以加快程序设计及调试的效率。
在编写注释时,应考虑到后续维护的需要,注释应该足够详细,但不应该太过冗长。
二、代码优化代码优化是提高Java程序效率的有效途径。
以下是提高程序效率的一些常用方法:1.使用Java虚拟机参数调优Java虚拟机参数可以影响程序运行的效率和性能,在编写程序时应根据实际需求进行调优。
例如,可以通过增加堆空间和减少垃圾收集的频率来提高程序效率。
2.使用缓存缓存是提高程序效率的有效方法之一。
通过缓存,可以避免程序重复计算或者访问数据库的次数过多,从而提高程序的速度。
3.避免不必要的对象创建Java中,通过创建对象来实现操作是一种常见的方法。
但是对象的创建和销毁通常需要较高的开销,因此应尽量避免在程序中频繁创建和销毁对象。
三、代码测试测试是保证Java程序质量的重要环节。
以下是测试Java程序的一些常用方法:1.单元测试单元测试是测试Java程序中最小的可测试单元。
通过单元测试可以找出代码中的潜在问题,并及时进行修复。
2.性能测试性能测试是测试程序运行效率和资源占用情况的一种方法。
编程学习过程中如何提高代码性能和可扩展性

编程学习过程中如何提高代码性能和可扩展性在编程的世界里,我们不仅要让代码能够正确运行,还要追求更高的性能和更好的可扩展性。
这就像是建造一座房子,不仅要保证它能立起来,还要让它住起来舒适、方便未来的扩建和改造。
那么,在编程学习的过程中,我们应该怎么做呢?首先,要理解代码性能和可扩展性的重要性。
想象一下,如果我们开发了一个应用程序,但是每次用户操作都要等待很长时间才能得到响应,或者当用户数量增加时,系统就崩溃了,这会是多么糟糕的用户体验!良好的代码性能可以让程序运行得更快、更高效,节省系统资源;而良好的可扩展性则能够让我们在未来轻松地添加新功能、支持更多的用户,而不需要对整个代码架构进行大规模的重构。
接下来,我们谈谈如何提高代码性能。
优化算法和数据结构是关键的一步。
就像选择合适的工具来完成工作一样,不同的算法和数据结构在不同的场景下性能差异很大。
比如,如果需要频繁地查找、插入和删除元素,链表可能比数组更合适;如果需要快速查找特定元素,哈希表可能是更好的选择。
对于一些复杂的问题,选择高效的算法可以大大提高代码的性能。
比如,在排序问题中,快速排序在大多数情况下比冒泡排序要快得多。
减少不必要的计算和重复计算也是提高性能的重要手段。
有时候,我们的代码可能会进行一些不必要的计算,或者多次重复相同的计算。
这就像是明明已经知道了答案,却还要反复去计算一样浪费时间。
我们可以通过缓存计算结果、避免重复计算等方式来提高性能。
比如,如果一个函数的计算结果在短时间内不会改变,我们可以将其计算结果缓存起来,下次需要时直接使用缓存的结果,而不是重新计算。
另外,合理使用内存也对性能有着重要的影响。
内存泄漏是一个常见的问题,如果我们在程序中不断地分配内存却没有及时释放,最终会导致系统内存不足,影响程序的性能。
同时,也要注意内存的访问模式,尽量减少内存的碎片化,提高内存的使用效率。
再来说说如何提高代码的可扩展性。
采用良好的架构设计是基础。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
20. 尽量避免使用二维数组
二维数据占用的内存空间比一维数组多得多,大概 10 倍以上。
21. 尽量避免使用 split
除非是必须的,否则应该避免使用 split,split 由于支持正则表达式,所以效 率比较低,如果是频繁的几十,几百万的调用将会耗费大量资源,如果确实需 要 频繁的调用 split,可以考虑使用 apache 的 StringUtils.split(string,char), 频繁 split 的可以缓存结果。
13. 尽量少对变量的重复计算
如 for(int i=0;i<list.size();i++) 应该改为 for(int i=0,len=list.size();i<len;i++) 并且在循环中应该避免使用复杂的表达式,在循环中,循环条件会被反复计算, 如果不使用复杂表达式,而使循环条件值不变的话,程序将会运行的更快。
11. 单线程应尽量使用 HashMap、ArrayList
HashTable、Vector 等使用了同步机制,降低了性能。
12. 尽量合理的创建 HashMap
当你要创建一个比较大的 hashMap 时,充分利用另一个构造函数 public HashMap(int initialCapacity, float loadFactor) 避免 HashMap 多次进行了 hash 重构,扩容是一件很耗费性能的事,在默认中 initialCapacity 只有 16,而 loadFactor 是 0.75,需要多大的容量,你最好能 准确的估计你所需要的最佳大小,同样的 Hashtable,Vectors 也是一样的道理。
5. 尽量使用局部变量
调用方法时传递的参数以及在调用中创建的临时变量都保存在栈(Stack)中, 速度较快。其他变量,如静态变量、实例变量等,都在堆(Heap)中创建,速度 较慢。
6. 尽量处理好包装类型和基本类型两者的使用场所
虽然包装类型和基本类型在使用过程中是可以相互转换,但它们两者所产生的内 存区域是完全不同的,基本类型数据产生和处理都在栈中处理,包装类型是对象, 是在堆中产生实例。 在集合类对象,有对象方面需要的处理适用包装类型,其他的处理提倡使用基本 类型。
7. 慎用 synchronized,尽量减小 synchronize 的方法
都知道,实现同步是要很大的系统开销作为代价的,甚至可能造成死锁,所以尽 量避免无谓的同步控制。synchronize 方法被调用时,直接会把当前对象锁 了, 在方法执行完之前其他线程无法调用当前对象的其他方法。所以 synchronize 的方法尽量小,并且应尽量使用方法同步代替代码块同步。
19. 尽量早释放无用对象的引用
大部分时,方法局部引用变量所引用的对象 会随着方法结束而变成垃圾,因此, 大部分时候程序无需将局部,引用变量显式设为 null。 例如:
Java 代码
1. Public void test(){ 2. Object obj = new Object(); 3. …… 4. Obj=null; 5. }
相关回复: xuanyuan 写道 7.慎用 synchronized,尽量减小 synchronize 的方法 re:同意,不过文中有个地方说错了,使用 synchronized 关键字并不一定都是 锁定当前对象的,要看具体的锁是什么。如果是在方法上加的 synchronized, 则是以对象本身为锁的,如果是静态方法则锁的粒度是类。 --------------9.尽量不要使用 finalize 方法 re:同意,其实不推荐用 finalize 方法的根本原因在于,JVM 的规范并不保证 何时执行该方法,所以用这个方法来释放资源很不合适,有可能造成长时间资源 得不到释放。 --------------16.尽量使用移位来代替'a/b'的操作;17.尽量使用移位来代替'a*b'的操作 re:个人不太同意这两条。这样做确实有更好的性能,但是却牺牲了可读性。这 两个操作符对很多程序员来说并不直观。我认为在如今硬件价格不那么昂贵的情 况下,略微牺牲一些性能,换来更好的可读性和可维护性是好的选择。
3. 尽量避免过多过常的创建 Java 对象
尽量避免在经常调用的方法,循环中 new 对象,由于系统不仅要花费时间来创建 对象,而且还要花时间对这些对象进行垃圾回收和处理,在我们可以控制的范围 内,最大限度的重用对象,最好能用基本的数据类型或数组来替代对象。
4. 尽量使用 final 修饰符
带有 final 修饰符的类是不可派生的。在 Java 核心 API 中,有许多应用 final 的例子,例如 ng.String。为 String 类指定 final 防止了使用者覆盖 length()方法。另外,如果一个类是 final 的,则该类所有方法都是 final 的。 Java 编译器会寻找机会内联(inline)所有的 final 方法(这和具体的编译器 实现有关)。此举能够使性能平均提高 50%。
Java 编程中“为了性能”尽量要做到 的一些地方
2012-03-07 作者 javatgo 编辑 wangguo 有 27884 人浏览 Java 优化编程 <>猎头职位: 上海: 资深架构师
最近的机器内存又爆满了,除了新增机器内存外,还应该好好 review 一下我们 的代码,有很多代码编写过于随意化,这些不好的习惯或对程序语言的不了解是 应该好好打压打压了。
8. 尽量使用 StringBuilder 和 StringBuffer 进行字符串连接
这个就不多讲了。
9. 尽量不要使用 finalize 方法
实际上,将资源清理放在 finalize 方法中完成是非常不好的选择,由于 GC 的工 作量很大,尤其是回收 Young 代内存时,大都会引起应用程序暂停,所以再选择 使用 finalize 方法进行资源清理,会导致 GC 负担更大,程序运行效率更差。
下面是参考网络资源总结的一些在 Java 编程中尽可能要做到的一些地方。
1. 尽量在合适的场合使用单例
使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所 有地方都适用于单例,简单来说,单例主要适用于以下三个方面: 第一,控制资源的使用,通过线程同步来控制资源的并发访问; 第二,控制实例的产生,以达到节约资源的目的; 第三,控制数据共享,在不建立直接关联的条件下,让多个不相关的进程或线程 之间实现通信。
2. 尽量避免随意使用静态变量
要知道,当某个对象被定义为 stataic 变量所引用,那么 gc 通常是不会回收这 个对象所占有的内存,如
Java 代码
1. public class A{ 2. static B b = new B(); 3. }
此时静态变量 b 的生命周期与 A 类同步,如果 A 类不会卸载,那么 b 对象会常驻 内存,直到程序终止。
25. 尽量避免非常大的内存分配
有时候问题不是由当时的堆状态造成的,而是因为分配失败造成的。分配的内存 块都必须是连续的,而随着堆越来越满,找到较大的连续块越来越困难。
26. 慎用异常
当创建一个异常时,需要收集一个栈跟踪(stack track),这个栈跟踪用于描述 异常是在何处创建的。构建这些栈跟踪时需要为运行时栈做一份快照,正是这一 部分开销很大。当需要创建一个 Exception 时,JVM 不得不说:先别动,我想 就您现在的样子存一份快照,所以暂时停止入栈和出栈操作。栈跟踪不只包含运 行时栈中的一两个元素,而是包含这个栈中的每一个元素。 如 果您创建一个 Exception ,就得付出代价。好在捕获异常开销不大,因此可 以使用 try-catch 将核心内容包起来。从技术上讲,您甚至可以随意地抛出异 常,而不用花费很大的代价。招致性能损失的并不是 throw 操作——尽管在没 有预先创建异常的情况下就抛出异常是有点不寻常。真正要花代价的是创建异常。 幸运的是,好的编程习惯已教会我们,不应该不管三七二十一就 抛出异常。异 常是为异常的情况而设计的,使用时也应该牢记这一原则。
10. 尽量使用基本数据类型代替对象
String str = "hello"; 上面这种方式会创建一个“hello”字符串,而且 JVM 的字符缓存池还会缓存这 个字符串; String str = new String("hello"); 此时程序除创建字符串外,str 所引用的 String 对象底层还包含一个 char[]数 组,这个 char[]数组依次存放了 h,e,l,l,o
22. ArrayList & LinkedList
一 个是线性表,一个是链表,一句话,随机查询尽量使用 ArrayList,ArrayList 优于 LinkedList,LinkedList 还要移动指 针,添加删除的操作 LinkedList 优 于 ArrayList,ArrayList 还要移动数据,不过这是理论性分析,事实未必如此, 重要的是理解好 2 者得数据结构,对症下药。
17.尽量使用移位来代替'a*b'的操作
同样的,对于'*'操作,使用移位的操作将会更快和更有效 如 int num = a * 4; int num = a * 8; 应该改为 int num = a << 2; int num = a << 3;
18. 尽量确定 StringBuffer 的容量
StringBuffer 的构造器会创建一个默认大小(通常是 16)的字符数组。在使用 中,如果超出这个大小,就会重新分配内存,创建一个更大的数组,并将原先的 数组复制过来,再 丢弃旧的数组。在大多数情况下,你可以在创建 StringBuffer 的时候指定大小,这样就避免了在容量不够的时候自动增长,以提高性能。 如:StringBuffer buffer = new StringBuffer(1000);