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

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

?? stringbuffer.java

?? gcc的組建
?? 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一区二区三区免费野_久草精品视频
国产一区二区按摩在线观看| 99国产精品一区| ㊣最新国产の精品bt伙计久久| 欧美性大战久久久| 国产高清精品久久久久| 午夜亚洲福利老司机| 中文字幕中文在线不卡住| 欧美哺乳videos| 欧美在线观看视频在线| 成人蜜臀av电影| 精品一区二区三区欧美| 亚洲超丰满肉感bbw| 日韩码欧中文字| 国产色爱av资源综合区| 精品国内二区三区| 欧美一区二区大片| 欧美日韩国产综合草草| 一本色道综合亚洲| 成人av电影在线网| 国产成人一区在线| 国产一区二区精品久久| 日本欧美一区二区三区| 亚洲一区二区黄色| 玉足女爽爽91| 亚洲美女免费视频| 亚洲三级小视频| 国产精品久久久久7777按摩| 国产日产精品一区| 国产欧美精品国产国产专区 | 国产精品一品二品| 免费观看30秒视频久久| 日韩成人dvd| 天天做天天摸天天爽国产一区| 亚洲激情在线激情| 亚洲精品乱码久久久久久黑人| 亚洲美女偷拍久久| 亚洲综合自拍偷拍| 亚洲成a人v欧美综合天堂下载| 夜夜嗨av一区二区三区四季av| 亚洲一区二区美女| 亚洲www啪成人一区二区麻豆| 亚洲国产精品一区二区久久| 亚洲综合免费观看高清在线观看| 亚洲一区二区三区中文字幕在线| 一区二区三区四区精品在线视频 | 国产亚洲一区二区三区四区| 久久久一区二区三区| 欧美激情在线观看视频免费| 久久精品一区八戒影视| 国产精品乱码一区二三区小蝌蚪| 国产精品高潮呻吟| 亚洲午夜精品在线| 日本成人在线不卡视频| 国产一区二区三区综合| 成人网页在线观看| 色国产综合视频| 欧美日韩国产乱码电影| 日韩一区二区在线观看| 久久久亚洲精品一区二区三区 | 国产日韩欧美麻豆| 18成人在线视频| 亚洲亚洲人成综合网络| 日本在线播放一区二区三区| 蜜臀av国产精品久久久久| 国产高清精品网站| 91黄色免费观看| 欧美一区在线视频| 国产精品美女视频| 亚洲午夜视频在线观看| 黄色资源网久久资源365| 波多野结衣视频一区| 欧美日韩在线综合| 久久久久久久综合狠狠综合| 亚洲欧美成aⅴ人在线观看| 欧美bbbbb| 97久久超碰国产精品| 日韩一区二区在线看片| 亚洲欧洲在线观看av| 日本午夜一本久久久综合| 懂色av一区二区三区免费观看| 欧美体内she精视频| 337p粉嫩大胆色噜噜噜噜亚洲| 亚洲色图一区二区| 久久精品久久综合| 91色porny在线视频| 欧美一级二级在线观看| 亚洲你懂的在线视频| 国产一区二区美女诱惑| 欧美午夜精品理论片a级按摩| 国产无一区二区| 奇米色777欧美一区二区| 91亚洲永久精品| 久久中文字幕电影| 三级欧美在线一区| 91福利精品视频| 中文字幕免费不卡| 韩日欧美一区二区三区| 欧美精品少妇一区二区三区| 中文字幕一区二区不卡| 久久成人18免费观看| 欧美日韩成人一区| 亚洲女同ⅹxx女同tv| 国产成+人+日韩+欧美+亚洲| 欧美一级片在线看| 亚洲国产精品一区二区久久| www.日本不卡| 国产日本欧洲亚洲| 国产一二精品视频| 日韩美女在线视频| 日本欧美大码aⅴ在线播放| 91久久一区二区| 中文字幕一区在线观看视频| 国产高清一区日本| 26uuu精品一区二区在线观看| 天天av天天翘天天综合网| 91免费看视频| 亚洲情趣在线观看| eeuss国产一区二区三区| 欧美精品一区二区在线播放| 日韩中文字幕一区二区三区| 欧美中文字幕一区二区三区| 综合色天天鬼久久鬼色| 成人激情黄色小说| 中文字幕中文字幕在线一区| 成人妖精视频yjsp地址| 欧美激情一二三区| 国产成人免费网站| 久久久久国产免费免费| 国产高清精品网站| 国产日产欧美精品一区二区三区| 国产乱对白刺激视频不卡| 精品电影一区二区三区| 精品一区二区影视| 欧美精品一区二区不卡 | 日本电影欧美片| 亚洲六月丁香色婷婷综合久久 | 国产精品久久久久久久久免费相片| 国产乱一区二区| 日本一区二区免费在线| 不卡高清视频专区| 亚洲色图20p| 欧美色图激情小说| 天天操天天色综合| 精品国产三级a在线观看| 国产精品77777| 综合欧美亚洲日本| 欧美日韩另类国产亚洲欧美一级| 天天av天天翘天天综合网色鬼国产| 欧美一卡在线观看| 国产精品一区不卡| 亚洲日本免费电影| 欧美三级日韩三级| 极品销魂美女一区二区三区| 国产人伦精品一区二区| 91免费观看国产| 午夜精品久久久久久久99樱桃| 这里只有精品免费| 国产高清精品久久久久| 亚洲乱码一区二区三区在线观看| 欧美日韩综合一区| 久久aⅴ国产欧美74aaa| 国产精品久久久久影院老司| 欧美三级午夜理伦三级中视频| 蜜桃一区二区三区在线| 国产精品久久影院| 精品视频一区 二区 三区| 国产美女在线精品| 亚洲午夜久久久久久久久电影院 | 久久久美女艺术照精彩视频福利播放| 国产成人av电影在线| 亚洲国产精品天堂| 精品处破学生在线二十三| 91亚洲精华国产精华精华液| 午夜欧美电影在线观看| 欧美国产精品中文字幕| 欧美日本不卡视频| 大尺度一区二区| 日韩精品亚洲一区| 国产精品国产三级国产aⅴ原创 | 久久99国产乱子伦精品免费| 中文字幕精品—区二区四季| 欧美人妇做爰xxxⅹ性高电影| 国产剧情一区二区三区| 亚洲一区二区精品视频| 欧美精品一区男女天堂| 欧美日韩在线三区| 大白屁股一区二区视频| 奇米影视一区二区三区| 亚洲乱码中文字幕| 国产婷婷色一区二区三区| 一本在线高清不卡dvd| 国产一区二区三区国产| 偷拍日韩校园综合在线| 国产精品久久免费看| 日韩精品一区二区三区视频在线观看| 91国偷自产一区二区开放时间 | 久久精品国产精品亚洲综合| 一个色在线综合| 国产精品久久久久毛片软件| 精品日韩欧美一区二区|