|
java使得复杂应用的开发变得相对简单。毫无疑问,它的这种易用性对java的大范围流行功不可没。然而,这种易用性实际上是一把双刃剑。一个设计良好的java程序,性能表现往往不如一个同样设计良好的c++程序。在java程序中,性能问题的大部分原因并不在于java语言,而是在于程序本身。养成好的代码编写习惯非常重要,比如正确地、巧妙地运用java.lang.string类和java.util.vector类,它能够显著地提高程序的性能。下面我们就来具体地分析一下这方面的问题。
在java中,使用最频繁、同时也是滥用最多的一个类或许就是java.lang.string,它也是导致代码性能低下最主要的原因之一。请考虑下面这个例子:
string s1 = "testing string"; string s2 = "concatenation performance"; string s3 = s1 + " " + s2;
几乎所有的java程序员都知道上面的代码效率不高。那么,我们应该怎么办呢?也许可以试试下面这种代码:
stringbuffer s = new stringbuffer(); s.append("testing string"); s.append(" "); s.append("concatenation performance"); string s3 = s.tostring();
这些代码会比第一个代码片段效率更高吗?答案是否定的。这里的代码实际上正是编译器编译第一个代码片段之后的结果。既然与使用多个独立的string对象相比,stringbuffer并没有使代码有任何效率上的提高,那为什么有那么多的java书籍批评第一种方法、推荐使用第二种方法?
第二个代码片段用到了stringbuffer类(编译器在第一个片段中也将使用stringbuffer类),我们来分析一下stringbuffer类的默认构造函数,下面是它的代码:
public stringbuffer() { thi |