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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? stringbuffer.java

?? linux下編程用 編譯軟件
?? JAVA
?? 第 1 頁 / 共 3 頁
字號:
/* StringBuffer.java -- Growable strings   Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006   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();    System.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);        System.arraycopy(stringBuffer.value, 0, value, count, len);        count += len;      }    return this;  }  /**

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品自拍偷拍| 中文字幕一区日韩精品欧美| xvideos.蜜桃一区二区| 国产精品国产三级国产普通话99| 亚洲不卡一区二区三区| 国产一区二区成人久久免费影院| 精品视频一区三区九区| 欧美国产成人精品| 久久不见久久见免费视频1| 欧美日韩一区三区四区| 国产精品女同一区二区三区| 日本欧美在线观看| 91精彩视频在线观看| 国产欧美一区二区三区网站 | 日韩欧美一卡二卡| 亚洲自拍另类综合| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 免费欧美高清视频| 666欧美在线视频| 亚洲综合色丁香婷婷六月图片| 国产宾馆实践打屁股91| 精品久久久久久亚洲综合网| 日韩va欧美va亚洲va久久| 欧美伊人久久久久久午夜久久久久| 国产喂奶挤奶一区二区三区| 狠狠色狠狠色合久久伊人| 日韩欧美一区二区不卡| 日韩精品一区第一页| 精品视频在线免费观看| 成人免费在线观看入口| 97久久超碰国产精品| 国产精品天天摸av网| 国产精品夜夜嗨| 久久久99久久| 国产成a人亚洲精品| 国产亚洲成av人在线观看导航| 久久精品国产网站| 精品国产网站在线观看| 韩国午夜理伦三级不卡影院| www国产成人| 成人视屏免费看| 国产精品美日韩| 91麻豆精东视频| 亚洲第一久久影院| 日韩欧美三级在线| 麻豆成人91精品二区三区| 欧美一区二区三区系列电影| 久久精品国产99国产精品| 久久中文娱乐网| 成人免费毛片高清视频| 亚洲欧美激情插| 69堂成人精品免费视频| 久久国产精品一区二区| 久久综合九色综合欧美就去吻| 国产一区福利在线| 中文字幕亚洲不卡| 欧美精品丝袜中出| 极品美女销魂一区二区三区 | 亚洲精品视频在线观看网站| 色久综合一二码| 婷婷久久综合九色综合绿巨人 | 欧美日韩日日摸| 久久99精品国产麻豆不卡| 国产日韩精品一区二区三区在线| 丁香婷婷综合网| 五月激情综合色| 国产亚洲精品资源在线26u| 91在线播放网址| 日本不卡一区二区三区高清视频| 久久久综合九色合综国产精品| 91小视频免费看| 久久激情五月婷婷| 国产精品国产三级国产| 91精品国产综合久久婷婷香蕉| 国产麻豆精品视频| 夜夜爽夜夜爽精品视频| 久久九九久久九九| 欧美三级视频在线观看| 夫妻av一区二区| 捆绑变态av一区二区三区| 中文字幕一区视频| 欧美不卡123| 欧美性猛交xxxx黑人交| 国产福利不卡视频| 日韩av一级电影| 一区二区三区欧美激情| 久久久久国产免费免费| 欧美日韩在线直播| k8久久久一区二区三区| 久久精品久久综合| 日韩国产精品大片| 亚洲人妖av一区二区| 2019国产精品| 欧美精品久久99| 色狠狠色狠狠综合| 99麻豆久久久国产精品免费| 久久成人综合网| 日本午夜一区二区| 亚洲bt欧美bt精品| 亚洲一二三区视频在线观看| 国产精品青草久久| 久久精品亚洲乱码伦伦中文 | 久久激情综合网| 天堂久久一区二区三区| 亚洲一区二区三区在线| 中文字幕视频一区二区三区久| 国产亚洲成年网址在线观看| 精品久久人人做人人爽| 欧美一区二区三区男人的天堂| 日本韩国精品一区二区在线观看| 成人av在线影院| 成人福利在线看| 粉嫩欧美一区二区三区高清影视 | 亚洲在线免费播放| 亚洲免费三区一区二区| 国产精品拍天天在线| 国产精品蜜臀在线观看| 中文字幕欧美三区| 18欧美亚洲精品| 1000精品久久久久久久久| 国产精品久99| 亚洲蜜桃精久久久久久久| 亚洲丝袜自拍清纯另类| 亚洲综合免费观看高清在线观看| 亚洲主播在线播放| 丝袜美腿一区二区三区| 蜜臀国产一区二区三区在线播放| 久久国产精品72免费观看| 激情综合网激情| 高清久久久久久| 成人av中文字幕| 在线视频中文字幕一区二区| 欧美日韩欧美一区二区| 日韩区在线观看| 国产婷婷色一区二区三区在线| 国产清纯白嫩初高生在线观看91| 国产精品麻豆一区二区| 一区二区三区91| 欧美bbbbb| 成人免费va视频| 欧美午夜精品免费| 精品国产乱码久久久久久蜜臀 | 精品少妇一区二区三区日产乱码| 精品国产sm最大网站| 国产欧美一区视频| 一区二区三区免费| 久久99精品久久久久婷婷| 成人一区二区三区| 欧美日韩一区高清| 久久伊人蜜桃av一区二区| 亚洲色欲色欲www| 日本在线不卡一区| voyeur盗摄精品| 日韩欧美中文一区二区| 国产精品久久久久久久久快鸭| 亚洲mv在线观看| 成人高清免费观看| 欧美精品丝袜久久久中文字幕| 久久九九久精品国产免费直播| 亚洲一区二区三区中文字幕在线| 精彩视频一区二区| 欧美午夜精品免费| 中文字幕免费观看一区| 日韩精品乱码av一区二区| 国产精品一二三| 欧美一级黄色片| 亚洲欧美欧美一区二区三区| 久久精品国产网站| 欧美人与性动xxxx| 一区二区中文字幕在线| 麻豆国产91在线播放| 在线观看亚洲专区| 国产嫩草影院久久久久| 免费观看在线综合| 91国产成人在线| 国产日韩精品久久久| 另类的小说在线视频另类成人小视频在线| av一区二区不卡| 中文乱码免费一区二区| 美女一区二区在线观看| 欧美主播一区二区三区| 国产精品青草综合久久久久99| 精品一区二区免费在线观看| 欧美日韩国产一二三| 亚洲乱码日产精品bd| 成人avav在线| 国产欧美日韩中文久久| 国产一区二区成人久久免费影院| 日韩午夜在线播放| 午夜国产精品影院在线观看| 99re8在线精品视频免费播放| 久久亚洲一区二区三区四区| 日韩av二区在线播放| 3d成人h动漫网站入口| 亚洲一区二区在线观看视频| 欧洲精品一区二区| 亚洲国产精品久久久久婷婷884 | 国产成a人亚洲| 国产日韩欧美高清| 成人综合婷婷国产精品久久免费|