亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
日本韩国精品在线| 欧美精品一区二区精品网| 欧美肥妇毛茸茸| 1000精品久久久久久久久| 国内外成人在线| 欧美日韩国产经典色站一区二区三区| 国产香蕉久久精品综合网| 青草国产精品久久久久久| 欧美性生活影院| 国产精品自在在线| 久久亚洲二区三区| 亚洲女性喷水在线观看一区| 丁香天五香天堂综合| 欧美国产一区视频在线观看| 国产精品一区二区在线播放 | 精品福利av导航| 奇米在线7777在线精品| 精品美女一区二区三区| 蜜臀av性久久久久蜜臀aⅴ四虎| 91麻豆.com| 亚洲第一主播视频| 日韩欧美亚洲国产另类| 国产麻豆精品一区二区| 日韩一区中文字幕| 欧美一区二区三区喷汁尤物| 麻豆精品在线播放| 中文字幕的久久| 欧美午夜一区二区| 日本成人中文字幕| 日韩欧美美女一区二区三区| 成人综合在线观看| 亚洲mv大片欧洲mv大片精品| 日韩精品最新网址| 91麻豆免费观看| 激情综合一区二区三区| 亚洲美女偷拍久久| 久久精品欧美一区二区三区不卡| www.日本不卡| 国产美女精品在线| 偷拍日韩校园综合在线| 欧美国产日韩在线观看| 日韩三级免费观看| 91色在线porny| 国产中文一区二区三区| 天堂精品中文字幕在线| 国产精品电影院| 日韩精品专区在线影院观看| 91国偷自产一区二区开放时间| 免费在线观看日韩欧美| 亚洲18色成人| 亚洲成人免费在线观看| 欧美极品aⅴ影院| 欧美激情综合五月色丁香小说| 国产日韩欧美a| 久久久高清一区二区三区| 久久久噜噜噜久久中文字幕色伊伊 | 亚洲精品福利视频网站| 亚洲视频一二三| 午夜伊人狠狠久久| 久久精品二区亚洲w码| 国产真实乱偷精品视频免| 欧美日韩激情在线| 精品对白一区国产伦| 中文字幕乱码亚洲精品一区| 成人欧美一区二区三区| 亚洲国产精品久久久男人的天堂| 日产欧产美韩系列久久99| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 欧美日韩国产美女| 欧美激情中文字幕一区二区| 一区二区三区四区亚洲| 日欧美一区二区| 久久国产精品区| 成人av资源在线观看| 91免费在线视频观看| 欧美日韩在线三区| 精品伦理精品一区| 亚洲女人小视频在线观看| 亚洲激情图片qvod| 久久99精品国产麻豆婷婷洗澡| 经典三级一区二区| 欧洲色大大久久| 精品成人一区二区三区| 亚洲欧美偷拍另类a∨色屁股| 久久精品国产久精国产爱| 91丨porny丨户外露出| 欧美日韩国产美女| 亚洲天堂精品在线观看| 久久爱www久久做| 91免费看片在线观看| 日韩精品一区二区三区视频在线观看 | 亚洲国产va精品久久久不卡综合| 国内外成人在线| 91.xcao| 亚洲色图一区二区三区| 久久精品国产成人一区二区三区 | 日韩国产精品91| 色综合天天性综合| 国产午夜精品福利| 久久99精品久久久久久国产越南| 99re亚洲国产精品| 国产三级一区二区| 韩国在线一区二区| 日韩久久精品一区| 麻豆成人免费电影| 日韩三级视频在线观看| 日日摸夜夜添夜夜添亚洲女人| 色综合久久中文字幕综合网 | 欧美精品久久一区二区三区| 《视频一区视频二区| 99国产精品视频免费观看| 国产精品免费av| 色综合网站在线| 亚洲电影一级黄| 制服.丝袜.亚洲.另类.中文 | 中文字幕乱码亚洲精品一区| 丰满亚洲少妇av| 亚洲日本va午夜在线电影| 在线免费观看视频一区| 一区二区三区在线免费视频| 欧美综合在线视频| 蜜桃av一区二区| 国产精品久久久久天堂| 欧美影院精品一区| 久久不见久久见免费视频7| 久久久久久免费网| 色哟哟精品一区| 婷婷夜色潮精品综合在线| 91精品国产麻豆| 成人久久18免费网站麻豆| 亚洲第一狼人社区| 国产精品久99| 久久精品视频一区| 日韩一级在线观看| 欧美日韩激情一区二区| 色偷偷久久一区二区三区| 福利一区福利二区| 国产精品1024| 精品在线你懂的| 午夜av区久久| 日韩电影网1区2区| 亚洲狼人国产精品| 亚洲欧美日韩中文播放| 国产精品毛片大码女人| 日韩欧美一区二区视频| 欧美精品一区在线观看| 欧美va亚洲va香蕉在线| 欧美不卡一区二区三区四区| 日韩一区二区免费高清| 欧美一二三区在线观看| 日韩欧美中文字幕精品| 日韩一区二区精品在线观看| 欧美一区二区三区人| 日韩一级大片在线观看| 精品久久久久久最新网址| 精品国产一区二区亚洲人成毛片| 日韩视频国产视频| 国产亚洲短视频| 亚洲免费成人av| 日本成人在线不卡视频| 黄一区二区三区| 99麻豆久久久国产精品免费优播| 日本高清免费不卡视频| 日韩视频在线一区二区| 亚洲国产精品精华液2区45| 亚洲一区二区三区四区在线免费观看 | 精品国产乱码久久久久久闺蜜 | 欧美日韩一区二区在线观看视频| 日韩三级视频中文字幕| 久久精品欧美一区二区三区不卡| 亚洲精品亚洲人成人网在线播放| 日韩成人精品在线| 一本色道久久加勒比精品| 欧美精品123区| 亚洲美女偷拍久久| 高清国产午夜精品久久久久久| 91久久精品一区二区三区| 精品99一区二区| 日韩精品三区四区| 97se狠狠狠综合亚洲狠狠| 欧美电视剧免费全集观看| 亚洲综合无码一区二区| www.综合网.com| 国产视频亚洲色图| 免费一级片91| 欧美视频中文一区二区三区在线观看| 国产午夜精品久久久久久久 | 亚洲色图丝袜美腿| 成人精品一区二区三区中文字幕| 欧美精品一区二| 国产中文字幕精品| 日韩一区二区电影| 另类小说色综合网站| 在线播放91灌醉迷j高跟美女| 亚洲综合在线免费观看| 91麻豆国产香蕉久久精品| 中文字幕一区二| 99re成人在线| 亚洲一区二区三区四区在线免费观看 | 欧美艳星brazzers|