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

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

?? stringbuffer.java

?? gcc的組建
?? JAVA
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
/* 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

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
夜夜嗨av一区二区三区四季av| 午夜视频在线观看一区二区三区| 色国产综合视频| 日本亚洲欧美天堂免费| 国产精品三级视频| 91精品国产乱| 日本韩国精品在线| 国产美女av一区二区三区| 亚洲一区二区三区国产| 久久精品视频免费| 91麻豆精品国产无毒不卡在线观看 | 亚洲成人资源网| 国产色一区二区| 欧美一级欧美三级在线观看| 99在线精品一区二区三区| 久久国产视频网| 亚洲成人av在线电影| 国产精品成人免费精品自在线观看| 欧美一级高清片| 欧美日韩精品一区二区| 色综合天天综合网国产成人综合天 | 在线视频国产一区| 成a人片国产精品| 国产一区二区不卡在线| 日韩在线观看一区二区| 亚洲综合小说图片| 亚洲天堂久久久久久久| 久久久久久久免费视频了| 欧美一区二区在线免费观看| 欧美日韩国产精选| 欧美日韩中文字幕一区二区| 色综合久久九月婷婷色综合| 岛国精品在线播放| 国产盗摄视频一区二区三区| 国模一区二区三区白浆| 久久er99精品| 九色|91porny| 久久99久久精品| 精品制服美女久久| 国产一区二区三区香蕉| 国产自产高清不卡| 国产老妇另类xxxxx| 国产精品自拍网站| 国产福利一区二区三区在线视频| 激情六月婷婷久久| 国产大片一区二区| www.性欧美| 色狠狠桃花综合| 欧美性色欧美a在线播放| 欧美色图12p| 91麻豆精品久久久久蜜臀| 欧美一区二区福利在线| 精品日韩一区二区三区| 精品乱人伦小说| 久久欧美一区二区| 国产精品久久久久久久裸模| 亚洲色图清纯唯美| 亚洲chinese男男1069| 日本欧美一区二区三区| 久久精品国产99国产| 国产成人综合网站| 91亚洲国产成人精品一区二三| 91国偷自产一区二区三区观看| 欧美日韩一区二区在线观看| 日韩欧美一卡二卡| 国产日韩精品一区| 一区二区三区欧美视频| 美国三级日本三级久久99| 国产在线精品一区二区夜色| 成人精品一区二区三区中文字幕| 色成人在线视频| 欧美高清激情brazzers| 久久青草欧美一区二区三区| 国产精品国产三级国产普通话蜜臀| 亚洲欧美日韩系列| 裸体健美xxxx欧美裸体表演| 国产91精品欧美| 欧美性猛交xxxx乱大交退制版| 91精品国产91久久久久久最新毛片| 日韩精品影音先锋| 国产精品国产自产拍在线| 视频一区在线播放| 国产+成+人+亚洲欧洲自线| 日本韩国精品在线| 久久久久国产一区二区三区四区| 一区二区三区影院| 久久成人久久爱| 色偷偷久久一区二区三区| 91精品在线麻豆| 国产精品国模大尺度视频| 日韩av午夜在线观看| 波多野结衣亚洲一区| 欧美一区二区三级| 亚洲欧美偷拍卡通变态| 秋霞成人午夜伦在线观看| 不卡的av在线| 精品国产免费久久| 亚洲第一狼人社区| 99精品视频一区| 久久久另类综合| 午夜免费欧美电影| 91在线视频播放地址| 精品福利视频一区二区三区| 一区二区三区精品在线观看| 国产电影一区在线| 日韩美女一区二区三区| 亚洲午夜激情网页| 91亚洲国产成人精品一区二区三| 精品少妇一区二区三区日产乱码| 亚洲午夜久久久久| 色欧美日韩亚洲| 国产精品久久久久四虎| 国产一区 二区 三区一级| 91精品午夜视频| 亚洲成av人片一区二区梦乃| 91在线你懂得| 国产精品免费av| 国产综合久久久久久久久久久久| 欧美日韩精品一区二区三区蜜桃| 亚洲欧美在线另类| 国产成人精品免费视频网站| 欧美mv日韩mv国产网站| 免费精品视频最新在线| 欧美三电影在线| 一卡二卡欧美日韩| 99国内精品久久| 国产精品嫩草影院av蜜臀| 国产精品一区二区三区四区| 欧美v日韩v国产v| 玖玖九九国产精品| 日韩欧美成人一区二区| 蜜桃视频在线观看一区二区| 欧美浪妇xxxx高跟鞋交| 亚洲一卡二卡三卡四卡| 在线看不卡av| 一区二区三区四区蜜桃| 色婷婷av久久久久久久| 亚洲人成精品久久久久久| 97se亚洲国产综合自在线观| 亚洲免费av网站| 欧美在线视频不卡| 丝袜亚洲另类欧美综合| 欧美日韩1234| 亚洲h在线观看| 欧美一级久久久久久久大片| 美国一区二区三区在线播放| 精品国产凹凸成av人网站| 国产精品一区二区久久不卡| 国产欧美一区二区精品仙草咪| 成人美女在线观看| 综合色天天鬼久久鬼色| 色哟哟一区二区三区| 免费在线观看精品| 欧美一区二区三区四区视频| 裸体歌舞表演一区二区| 久久久不卡网国产精品二区 | 蜜臀va亚洲va欧美va天堂| 欧美tickling网站挠脚心| 国产美女精品人人做人人爽| 日本一区二区视频在线| 91视频免费观看| 亚洲图片有声小说| 精品国产自在久精品国产| 成人综合激情网| 亚洲精品国产品国语在线app| 欧美日韩一区二区电影| 久久成人免费电影| 中文字幕一区二区在线观看| 欧美日韩激情在线| 国产一区二区在线电影| 亚洲美女屁股眼交3| 欧美一区二区三区视频在线| 国产高清在线精品| 亚洲综合激情另类小说区| 日韩欧美第一区| 99视频精品全部免费在线| 亚洲一区二区在线免费看| 精品国产凹凸成av人网站| 91香蕉视频黄| 久久精品国产99国产精品| 国产精品国产三级国产普通话三级 | 日本一道高清亚洲日美韩| 日本一区二区不卡视频| 欧美日韩一区二区三区不卡| 国产成人精品免费看| 亚洲午夜在线视频| 久久蜜臀中文字幕| 欧美日韩国产综合视频在线观看| 国产乱码精品一区二区三| 一区二区免费在线| 国产网红主播福利一区二区| 欧美日韩三级一区二区| 成人毛片视频在线观看| 日本伊人色综合网| 一区二区三区在线免费| 久久精品男人天堂av| 欧美日韩二区三区| 99久久久免费精品国产一区二区| 久久97超碰国产精品超碰| 亚洲午夜一二三区视频|