亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? stringbuffer.java

?? gcc的組建
?? JAVA
?? 第 1 頁 / 共 3 頁
字號:
/* StringBuffer.java -- Growable strings   Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005   Free Software Foundation, Inc.This file is part of GNU Classpath.GNU Classpath is free software; you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation; either version 2, or (at your option)any later version.GNU Classpath is distributed in the hope that it will be useful, butWITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNUGeneral Public License for more details.You should have received a copy of the GNU General Public Licensealong with GNU Classpath; see the file COPYING.  If not, write to theFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA02110-1301 USA.Linking this library statically or dynamically with other modules ismaking a combined work based on this library.  Thus, the terms andconditions of the GNU General Public License cover the wholecombination.As a special exception, the copyright holders of this library give youpermission to link this library with independent modules to produce anexecutable, regardless of the license terms of these independentmodules, and to copy and distribute the resulting executable underterms of your choice, provided that you also meet, for each linkedindependent module, the terms and conditions of the license of thatmodule.  An independent module is a module which is not derived fromor based on this library.  If you modify this library, you may extendthis exception to your version of the library, but you are notobligated to do so.  If you do not wish to do so, delete thisexception statement from your version. */package java.lang;import java.io.Serializable;/** * <code>StringBuffer</code> represents a changeable <code>String</code>. * It provides the operations required to modify the * <code>StringBuffer</code>, including insert, replace, delete, append, * and reverse. It is thread-safe; meaning that all modifications to a buffer * are in synchronized methods. * * <p><code>StringBuffer</code>s are variable-length in nature, so even if * you initialize them to a certain size, they can still grow larger than * that. <em>Capacity</em> indicates the number of characters the * <code>StringBuffer</code> can have in it before it has to grow (growing * the char array is an expensive operation involving <code>new</code>). * * <p>Incidentally, compilers often implement the String operator "+" * by using a <code>StringBuffer</code> operation:<br> * <code>a + b</code><br> * is the same as<br> * <code>new StringBuffer().append(a).append(b).toString()</code>. * * <p>Classpath's StringBuffer is capable of sharing memory with Strings for * efficiency.  This will help when a StringBuffer is converted to a String * and the StringBuffer is not changed after that (quite common when performing * string concatenation). * * @author Paul Fisher * @author John Keiser * @author Tom Tromey * @author Eric Blake (ebb9@email.byu.edu) * @see String * @since 1.0 * @status updated to 1.4 */public final class StringBuffer implements Serializable, CharSequence{  /**   * Compatible with JDK 1.0+.   */  private static final long serialVersionUID = 3388685877147921107L;  /**   * Index of next available character (and thus the size of the current   * string contents).  Note that this has permissions set this way so that   * String can get the value.   *   * @serial the number of characters in the buffer   */  int count;  /**   * The buffer.  Note that this has permissions set this way so that String   * can get the value.   *   * @serial the buffer   */  char[] value;  /**   * True if the buffer is shared with another object (StringBuffer or   * String); this means the buffer must be copied before writing to it again.   * Note that this has permissions set this way so that String can get the   * value.   *   * @serial whether the buffer is shared   */  boolean shared;  /**   * The default capacity of a buffer.   */  private static final int DEFAULT_CAPACITY = 16;  /**   * Create a new StringBuffer with default capacity 16.   */  public StringBuffer()  {    this(DEFAULT_CAPACITY);  }  /**   * Create an empty <code>StringBuffer</code> with the specified initial   * capacity.   *   * @param capacity the initial capacity   * @throws NegativeArraySizeException if capacity is negative   */  public StringBuffer(int capacity)  {    value = new char[capacity];  }  /**   * Create a new <code>StringBuffer</code> with the characters in the   * specified <code>String</code>. Initial capacity will be the size of the   * String plus 16.   *   * @param str the <code>String</code> to convert   * @throws NullPointerException if str is null   */  public StringBuffer(String str)  {    // Unfortunately, because the size is 16 larger, we cannot share.    count = str.count;    value = new char[count + DEFAULT_CAPACITY];    str.getChars(0, count, value, 0);  }  /**   * Create a new <code>StringBuffer</code> with the characters from the   * specified <code>CharSequence</code>. Initial capacity will be the   * size of the CharSequence plus 16.   *   * @param sequence the <code>String</code> to convert   * @throws NullPointerException if str is null   *   * @since 1.5   */  public StringBuffer(CharSequence sequence)  {    count = Math.max(0, sequence.length());    value = new char[count + DEFAULT_CAPACITY];    for (int i = 0; i < count; ++i)      value[i] = sequence.charAt(i);  }  /**   * Get the length of the <code>String</code> this <code>StringBuffer</code>   * would create. Not to be confused with the <em>capacity</em> of the   * <code>StringBuffer</code>.   *   * @return the length of this <code>StringBuffer</code>   * @see #capacity()   * @see #setLength(int)   */  public synchronized int length()  {    return count;  }  /**   * Get the total number of characters this <code>StringBuffer</code> can   * support before it must be grown.  Not to be confused with <em>length</em>.   *   * @return the capacity of this <code>StringBuffer</code>   * @see #length()   * @see #ensureCapacity(int)   */  public synchronized int capacity()  {    return value.length;  }  /**   * Increase the capacity of this <code>StringBuffer</code>. This will   * ensure that an expensive growing operation will not occur until   * <code>minimumCapacity</code> is reached. The buffer is grown to the   * larger of <code>minimumCapacity</code> and   * <code>capacity() * 2 + 2</code>, if it is not already large enough.   *   * @param minimumCapacity the new capacity   * @see #capacity()   */  public synchronized void ensureCapacity(int minimumCapacity)  {    ensureCapacity_unsynchronized(minimumCapacity);  }  /**   * Set the length of this StringBuffer. If the new length is greater than   * the current length, all the new characters are set to '\0'. If the new   * length is less than the current length, the first <code>newLength</code>   * characters of the old array will be preserved, and the remaining   * characters are truncated.   *   * @param newLength the new length   * @throws IndexOutOfBoundsException if the new length is negative   *         (while unspecified, this is a StringIndexOutOfBoundsException)   * @see #length()   */  public synchronized void setLength(int newLength)  {    if (newLength < 0)      throw new StringIndexOutOfBoundsException(newLength);    int valueLength = value.length;    /* Always call ensureCapacity_unsynchronized in order to preserve       copy-on-write semantics.  */    ensureCapacity_unsynchronized(newLength);    if (newLength < valueLength)      {        /* If the StringBuffer's value just grew, then we know that           value is newly allocated and the region between count and           newLength is filled with '\0'.  */	count = newLength;      }    else      {	/* The StringBuffer's value doesn't need to grow.  However,	   we should clear out any cruft that may exist.  */	while (count < newLength)          value[count++] = '\0';      }  }  /**   * Get the character at the specified index.   *   * @param index the index of the character to get, starting at 0   * @return the character at the specified index   * @throws IndexOutOfBoundsException if index is negative or &gt;= length()   */  public synchronized char charAt(int index)  {    if (index < 0 || index >= count)      throw new StringIndexOutOfBoundsException(index);    return value[index];  }  /**   * Get the code point at the specified index.  This is like #charAt(int),   * but if the character is the start of a surrogate pair, and the   * following character completes the pair, then the corresponding   * supplementary code point is returned.   * @param index the index of the codepoint to get, starting at 0   * @return the codepoint at the specified index   * @throws IndexOutOfBoundsException if index is negative or &gt;= length()   * @since 1.5   */  public synchronized int codePointAt(int index)  {    return Character.codePointAt(value, index, count);  }  /**   * Get the code point before the specified index.  This is like   * #codePointAt(int), but checks the characters at <code>index-1</code> and   * <code>index-2</code> to see if they form a supplementary code point.   * @param index the index just past the codepoint to get, starting at 0   * @return the codepoint at the specified index   * @throws IndexOutOfBoundsException if index is negative or &gt;= length()   * @since 1.5   */  public synchronized int codePointBefore(int index)  {    // Character.codePointBefore() doesn't perform this check.  We    // could use the CharSequence overload, but this is just as easy.    if (index >= count)      throw new IndexOutOfBoundsException();    return Character.codePointBefore(value, index, 1);  }  /**   * Get the specified array of characters. <code>srcOffset - srcEnd</code>   * characters will be copied into the array you pass in.   *   * @param srcOffset the index to start copying from (inclusive)   * @param srcEnd the index to stop copying from (exclusive)   * @param dst the array to copy into   * @param dstOffset the index to start copying into   * @throws NullPointerException if dst is null   * @throws IndexOutOfBoundsException if any source or target indices are   *         out of range (while unspecified, source problems cause a   *         StringIndexOutOfBoundsException, and dest problems cause an   *         ArrayIndexOutOfBoundsException)   * @see System#arraycopy(Object, int, Object, int, int)   */  public synchronized void getChars(int srcOffset, int srcEnd,                                    char[] dst, int dstOffset)  {    if (srcOffset < 0 || srcEnd > count || srcEnd < srcOffset)      throw new StringIndexOutOfBoundsException();    VMSystem.arraycopy(value, srcOffset, dst, dstOffset, srcEnd - srcOffset);  }  /**   * Set the character at the specified index.   *   * @param index the index of the character to set starting at 0   * @param ch the value to set that character to   * @throws IndexOutOfBoundsException if index is negative or &gt;= length()   *         (while unspecified, this is a StringIndexOutOfBoundsException)   */  public synchronized void setCharAt(int index, char ch)  {    if (index < 0 || index >= count)      throw new StringIndexOutOfBoundsException(index);    // Call ensureCapacity to enforce copy-on-write.    ensureCapacity_unsynchronized(count);    value[index] = ch;  }  /**   * Append the <code>String</code> value of the argument to this   * <code>StringBuffer</code>. Uses <code>String.valueOf()</code> to convert   * to <code>String</code>.   *   * @param obj the <code>Object</code> to convert and append   * @return this <code>StringBuffer</code>   * @see String#valueOf(Object)   * @see #append(String)   */  public StringBuffer append(Object obj)  {    return append(obj == null ? "null" : obj.toString());  }  /**   * Append the <code>String</code> to this <code>StringBuffer</code>. If   * str is null, the String "null" is appended.   *   * @param str the <code>String</code> to append   * @return this <code>StringBuffer</code>   */  public synchronized StringBuffer append(String str)  {    if (str == null)      str = "null";    int len = str.count;    ensureCapacity_unsynchronized(count + len);    str.getChars(0, len, value, count);    count += len;    return this;  }  /**   * Append the <code>StringBuffer</code> value of the argument to this   * <code>StringBuffer</code>. This behaves the same as   * <code>append((Object) stringBuffer)</code>, except it is more efficient.   *   * @param stringBuffer the <code>StringBuffer</code> to convert and append   * @return this <code>StringBuffer</code>   * @see #append(Object)   * @since 1.4   */  public synchronized StringBuffer append(StringBuffer stringBuffer)  {    if (stringBuffer == null)      return append("null");    synchronized (stringBuffer)      {        int len = stringBuffer.count;        ensureCapacity_unsynchronized(count + len);        VMSystem.arraycopy(stringBuffer.value, 0, value, count, len);        count += len;      }    return this;  }  /**   * Append the <code>CharSequence</code> value of the argument to this   * <code>StringBuffer</code>.   *   * @param sequence the <code>CharSequence</code> to append

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩一区二区欧美激情| 日本欧美在线观看| 91一区二区三区在线观看| 国产精品美女一区二区三区| 成人黄色a**站在线观看| 中文字幕一区二区不卡| 91热门视频在线观看| 亚洲国产毛片aaaaa无费看 | 国产一区二区久久| 国产女人aaa级久久久级| 福利电影一区二区| 一级精品视频在线观看宜春院 | 亚洲激情校园春色| 国产日韩欧美一区二区三区乱码| 国产一区二区不卡在线 | 在线精品视频一区二区| 五月开心婷婷久久| 久久久一区二区三区捆绑**| 99精品久久久久久| 午夜精品久久久久影视| 久久久久久免费网| 91黄色激情网站| 美女网站一区二区| 国产精品久久一卡二卡| 欧美日韩国产综合一区二区| 国产一区欧美一区| 一区二区三区四区蜜桃| www国产亚洲精品久久麻豆| 97久久精品人人做人人爽50路 | 精品久久久久久久久久久久包黑料| 国产精品伊人色| 亚洲午夜精品一区二区三区他趣| 精品国产乱码91久久久久久网站| 99精品视频一区| 久久精品国产**网站演员| 最新国产の精品合集bt伙计| 精品乱人伦一区二区三区| 91在线观看视频| 国产一区二区三区蝌蚪| 午夜久久久久久久久| 亚洲欧洲性图库| 久久久不卡网国产精品一区| 欧美午夜精品久久久久久超碰 | 色婷婷精品久久二区二区蜜臂av| 久久精品久久精品| 一区二区三国产精华液| 久久久精品免费观看| 欧美精品久久久久久久久老牛影院| 高清国产一区二区三区| 久久99精品国产麻豆婷婷| 一区二区三区国产豹纹内裤在线| 欧美国产综合色视频| 欧美一区欧美二区| 精品视频色一区| 91热门视频在线观看| 丁香一区二区三区| 国模冰冰炮一区二区| 免费xxxx性欧美18vr| 一片黄亚洲嫩模| 亚洲女人****多毛耸耸8| 久久久91精品国产一区二区精品 | 亚洲一区电影777| 亚洲欧洲性图库| 国产精品网友自拍| 久久精品综合网| wwww国产精品欧美| 久久影院午夜论| 久久亚洲精华国产精华液| 日韩一区二区三区观看| 日韩一区二区三区在线视频| 欧美久久高跟鞋激| 国产亚洲综合av| 2014亚洲片线观看视频免费| 日韩欧美国产麻豆| 欧美成人午夜电影| 日韩欧美你懂的| 欧美成人三级电影在线| 精品日产卡一卡二卡麻豆| 精品久久久久久久久久久久久久久| 日韩一区二区三区免费看| 欧美一卡2卡3卡4卡| 欧美大片顶级少妇| 精品处破学生在线二十三| 欧美zozo另类异族| 久久久久久影视| 中文字幕av一区二区三区高| 国产精品盗摄一区二区三区| 国产精品对白交换视频| 亚洲男人天堂av| 亚洲第一成人在线| 日本大胆欧美人术艺术动态 | 国产喂奶挤奶一区二区三区| 国产农村妇女精品| 亚洲欧美偷拍三级| 亚洲二区视频在线| 日产国产欧美视频一区精品| 紧缚奴在线一区二区三区| 国产91丝袜在线观看| 91在线精品一区二区| 欧美午夜宅男影院| 日韩精品资源二区在线| 久久精品亚洲国产奇米99| 中文字幕一区二区三区蜜月| 亚洲亚洲精品在线观看| 美国毛片一区二区三区| 国产成人精品三级| 91美女蜜桃在线| 日韩欧美的一区| 国产精品视频一二三| 午夜精品一区二区三区免费视频 | 久久久精品人体av艺术| 亚洲视频一区在线| 午夜欧美一区二区三区在线播放| 韩国精品一区二区| 一本大道综合伊人精品热热| 91精品国产全国免费观看| 国产亚洲一二三区| 亚洲成人动漫在线免费观看| 国产一区二区三区不卡在线观看| 91丨九色丨蝌蚪丨老版| 欧美一级高清片在线观看| 综合久久一区二区三区| 秋霞国产午夜精品免费视频| 成人爽a毛片一区二区免费| 欧美日韩免费一区二区三区视频| 国产视频一区二区在线观看| 天天综合日日夜夜精品| 成人性生交大片免费看中文| 91超碰这里只有精品国产| 欧美国产国产综合| 日本美女视频一区二区| 91色九色蝌蚪| 国产欧美日韩麻豆91| 日韩国产欧美视频| 日本久久电影网| 国产精品理伦片| 韩国av一区二区三区| 69av一区二区三区| 一区二区三区四区蜜桃 | 91美女在线视频| 亚洲一区二区在线观看视频| 国产麻豆一精品一av一免费| 欧美日韩一区久久| 亚洲欧美综合另类在线卡通| 国产精品资源网| 欧美一级午夜免费电影| 五月天亚洲精品| 欧美亚洲国产bt| 亚洲免费在线视频| 99在线精品一区二区三区| 久久久综合九色合综国产精品| 奇米精品一区二区三区在线观看| 欧美性受xxxx| 一区二区三区四区在线免费观看| www.欧美日韩| 日本一区二区三区四区在线视频| 国产专区欧美精品| 精品欧美久久久| 精品一区二区三区影院在线午夜| 制服丝袜在线91| 婷婷久久综合九色综合绿巨人| 欧美午夜电影网| 亚洲精品视频免费看| 91福利社在线观看| 亚洲欧美日韩成人高清在线一区| 97精品视频在线观看自产线路二| 欧美激情一区二区三区四区| 国产suv一区二区三区88区| 久久久精品国产99久久精品芒果 | 午夜日韩在线观看| 欧美日韩精品一区二区三区| 亚洲国产成人va在线观看天堂| 欧美色网一区二区| 亚洲成人免费观看| 欧美精品国产精品| 全部av―极品视觉盛宴亚洲| 欧美mv日韩mv| 国产91综合网| 亚洲品质自拍视频网站| 欧美日韩大陆一区二区| 奇米亚洲午夜久久精品| 久久综合五月天婷婷伊人| 国产成人自拍高清视频在线免费播放| 国产免费成人在线视频| 91免费观看视频在线| 亚洲国产wwwccc36天堂| 欧美成人精品福利| 高清视频一区二区| 一区二区三区免费| 欧美二区乱c少妇| 国产一区二区三区四区五区美女| 国产精品亲子伦对白| 91国产成人在线| 蜜臀av一区二区在线观看| 国产欧美一区二区三区鸳鸯浴 | 欧洲国内综合视频| 日韩精品亚洲一区| 久久久www成人免费毛片麻豆 | 美女视频网站黄色亚洲| 国产欧美一二三区|