Java String 的 equals() 方法可能的优化

王朝java/jsp·作者佚名  2008-05-31
宽屏版  字体: |||超大  

JDK1.4, 1.5 的 String Class 代码如下

[code]

public final class String

implements Java.io.Serializable, Comparable<String>, CharSequence

{

/** The value is used for character storage. */

private final char value[];

/** The offset is the first index of the storage that is used. */

private final int offset;

/** The count is the number of characters in the String. */

private final int count;

[/code]

[code]

/**

* Initializes a newly created <code>String</code> object so that it

* represents the same sequence of characters as the argument; in other

* Words, the newly created string is a copy of the argument string. Unless

* an eXPlicit copy of <code>original</code> is needed, use of this

* constrUCtor is unnecessary since Strings are immutable.

*

* @param original a <code>String</code>.

*/

public String(String original) {

int size = original.count;

char[] originalValue = original.value;

char[] v;

if (originalValue.length > size) {

// The array representing the String is bigger than the new

// String itself. Perhaps this constructor is being called

// in order to trim the baggage, so make a copy of the array.

v = new char[size];

System.arraycopy(originalValue, original.offset, v, 0, size);

} else {

// The array representing the String is the same

// size as the String, so no point in making a copy.

v = originalValue;

}

this.offset = 0;

this.count = size;

this.value = v;

}

[/code]

从这段构造函数中,我们可以看出,不同Reference的String之间有可能共享相同的 char[]。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有