當前位置:編程學習大全網 - 源碼下載 - 請詳細說壹下java中append()的方法.

請詳細說壹下java中append()的方法.

Java中的append( )方法其實是創建了壹個新的數組,擴大了長度,將需要添加的字符串給復制到這個新的數組中。

JAVA中Stringbuffer有append( )方法:

而Stringbuffer是動態字符串數組,append( )是往動態字符串數組添加,跟“xxxx”+“yyyy”相當‘+’號。

跟String不同的是Stringbuffer是放壹起的,String1+String2和Stringbuffer1.append("yyyy")雖然打印效果壹樣,但在內存中表示卻不壹樣、

String1+String2 存在於不同的兩個地址內存,Stringbuffer1.append(Stringbuffer2)放再壹起。

StringBuffer是線程安全的,多用於多線程。

擴展資料

查看StringBuffer的append()方法

如圖所示代碼:

1、進入append方法

@Override

public synchronized StringBuffer append(String str) {

toStringCache = null;

super.append(str);

return this;

}

其中toStringCache是Cleared whenever the StringBuffer is modified.

2、進入AbstractStringBuilder的append()方法

public AbstractStringBuilder append(String str) {

if (str == null)

return appendNull();

int len = str.length();

ensureCapacityInternal(count + len);

str.getChars(0, len, value, count);

count += len;

return this;

}

如果參數str為空返回appendNull(); 該方法最終返回return this.

3、進入ensureCapacityInternal()方法

private void ensureCapacityInternal(int minimumCapacity) {

// overflow-conscious code

if (minimumCapacity - value.length > 0) {

value = Arrays.copyOf(value,

newCapacity(minimumCapacity));

}

}

copyOf(char[] original, int newLength)的方法查JDK幫助文檔可知:復制指定的數組,復制具有指定的長度。

4、進入String的getChars()方法

public void getChars(int srcBegin, int srcEnd, char dst[], int dstBegin) {//0,len=5,value=[hello],count=5

if (srcBegin < 0) {

throw new StringIndexOutOfBoundsException(srcBegin);

}

if (srcEnd > value.length) {

throw new StringIndexOutOfBoundsException(srcEnd);

}

if (srcBegin > srcEnd) {

throw new StringIndexOutOfBoundsException(srcEnd - srcBegin);

}

System.arraycopy(value, srcBegin, dst, dstBegin, srcEnd - srcBegin);

}

5、最終調用的是System.arraycopy的方法:

public static void arraycopy(Object src,

int srcPos,

Object dest,

int destPos,

int length)

/*src - 源數組。

srcPos - 源數組中的起始位置。

dest - 目標數組。

destPos - 目的地數據中的起始位置。

length - 要復制的數組元素的數量。?

*/

System.arraycopy([world], 0, [hello], 5, 5);

將指定源數組中的數組從指定位置復制到目標數組的指定位置。

參考資料:

百度百科-append

  • 上一篇:什麽牌子的家具環保且質量好?舉例對比推薦
  • 下一篇:常用的計算機語言有哪些?
  • copyright 2024編程學習大全網