【发布时间】:2015-04-02 15:10:41
【问题描述】:
我查看了String 和StringBuffer API,当您调用substring 方法时,它们的内部工作方式似乎相同。
两者都有原始 char 数组 (char[] original) 的引用,因此两者都使用相同的空间。
那为什么首选StringBuffer?
stringbuffer.substring(2,4) 与 string.substring(2,4) 有何不同。
StringBuffer的子串方法:
public String substring(int start, int end) {
return new String(value, start, end - start);
}
String的子串方法:
public String substring(int beginIndex, int endIndex) {
return ((beginIndex == 0) && (endIndex == value.length)) ? this
: new String(value, beginIndex, subLen);
}
两个子字符串变体然后调用 String 构造函数:
public String(char value[], int offset, int count) {
this.value = Arrays.copyOfRange(value, offset, offset+count);
}
调用Arrays类的以下方法:
public static char[] copyOfRange(char[] original, int from, int to) {
// **char[] original**
return copy;
}
【问题讨论】:
标签: java string substring stringbuffer