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

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

?? stringbuffer.java

?? linux下編程用 編譯軟件
?? 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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一卡二卡在线| 91丨porny丨蝌蚪视频| 欧美一区二区二区| 另类小说综合欧美亚洲| 欧美精品一区二区三区蜜桃 | 国产精品视频免费| 成人美女视频在线观看| 国产精品国产精品国产专区不片| 99re66热这里只有精品3直播| 亚洲色图欧美激情| 欧美在线观看18| 日韩在线a电影| 国产农村妇女毛片精品久久麻豆| av一二三不卡影片| 亚洲aaa精品| 2021中文字幕一区亚洲| 成人黄色软件下载| 午夜一区二区三区视频| 精品国产伦一区二区三区观看方式 | 成人免费的视频| 一区二区欧美在线观看| 日韩欧美中文字幕精品| 成人精品鲁一区一区二区| 亚洲欧美日韩一区二区 | 高清在线不卡av| 亚洲激情一二三区| 日韩欧美黄色影院| 99国产精品久久久久| 午夜欧美2019年伦理| 国产亚洲成年网址在线观看| 色欲综合视频天天天| 久久99国产乱子伦精品免费| 1024精品合集| 亚洲精品在线三区| 欧美性欧美巨大黑白大战| 激情五月婷婷综合| 亚洲另类中文字| 久久久综合九色合综国产精品| 在线观看精品一区| 国产白丝网站精品污在线入口| 亚洲成人高清在线| 国产精品水嫩水嫩| 精品国产91久久久久久久妲己| 一本色道久久综合亚洲精品按摩| 国产在线播放一区三区四| 亚洲国产美国国产综合一区二区| 亚洲国产精品t66y| 精品免费视频.| 欧美精选在线播放| 色婷婷精品大视频在线蜜桃视频| 国产一区中文字幕| 青青青爽久久午夜综合久久午夜 | 亚洲美女偷拍久久| 国产欧美一区视频| 精品国产乱码久久久久久浪潮 | 秋霞午夜av一区二区三区| 亚洲精选视频免费看| 欧美国产综合色视频| 久久影院午夜论| 日韩欧美一区二区免费| 精品视频全国免费看| 91蜜桃婷婷狠狠久久综合9色| 国产成人在线影院| 久88久久88久久久| 奇米精品一区二区三区在线观看一| 亚洲国产你懂的| 亚洲综合久久久| 亚洲免费观看高清完整版在线观看熊 | 欧美视频在线观看一区| a级高清视频欧美日韩| 风间由美一区二区av101| 国产福利一区在线| 国产很黄免费观看久久| 国产成人精品一区二| 精品无人码麻豆乱码1区2区| 麻豆国产精品777777在线| 久久 天天综合| 国产精品资源站在线| 国产一区二区不卡| 高清在线成人网| 99久久99久久免费精品蜜臀| 97精品超碰一区二区三区| 99久久精品国产一区二区三区| 成人黄色一级视频| 91麻豆123| 欧美日韩国产综合一区二区三区 | 亚洲一区二区三区在线播放| 亚洲一区二三区| 日韩av网站免费在线| 捆绑调教美女网站视频一区| 捆绑紧缚一区二区三区视频 | 中国av一区二区三区| 国产精品久久久久久久午夜片| 亚洲免费av高清| 首页亚洲欧美制服丝腿| 看电视剧不卡顿的网站| 国产99久久久国产精品潘金| 成a人片亚洲日本久久| 欧美亚洲另类激情小说| 日韩欧美中文一区| 国产精品盗摄一区二区三区| 一区二区三区四区在线播放| 亚洲成国产人片在线观看| 久久精品国产色蜜蜜麻豆| 成人激情午夜影院| 欧美二区三区91| 国产欧美一区二区在线| 亚洲一级二级在线| 久久99蜜桃精品| 91色porny在线视频| 欧美一区二区三区视频免费播放| 亚洲精品在线电影| 亚洲最大成人综合| 国产一区二区三区在线看麻豆| 成人黄色av电影| 91精品国产日韩91久久久久久| 欧美激情综合五月色丁香小说| 亚洲成人av电影| 成人免费毛片a| 日韩欧美一级特黄在线播放| 亚洲日本护士毛茸茸| 狠狠色狠狠色合久久伊人| 97se亚洲国产综合自在线不卡 | 性久久久久久久| 不卡一区二区中文字幕| 日韩欧美一区电影| 亚洲一区二区三区在线播放| 国产精品一区久久久久| 欧美欧美午夜aⅴ在线观看| 国产亚洲精品福利| 丝袜美腿亚洲一区| 日本韩国一区二区三区| 久久精品一二三| 日韩精品1区2区3区| 成人午夜激情影院| 精品理论电影在线| 偷窥少妇高潮呻吟av久久免费| 懂色av一区二区三区蜜臀| 日韩视频一区二区三区 | 91精品国产综合久久久久| 最新国产精品久久精品| 久久99这里只有精品| 欧美巨大另类极品videosbest | 亚洲午夜一区二区| 99久久99久久精品国产片果冻| 日韩欧美国产系列| 日韩专区欧美专区| 在线一区二区三区做爰视频网站| 国产精品污www在线观看| 美女久久久精品| 3d成人动漫网站| 首页综合国产亚洲丝袜| 欧美性受极品xxxx喷水| 亚洲丝袜精品丝袜在线| 成人精品一区二区三区四区| 国产欧美视频一区二区三区| 老汉av免费一区二区三区| 欧美日本在线观看| 亚洲午夜久久久久中文字幕久| 色视频一区二区| 综合网在线视频| 色偷偷一区二区三区| 亚洲精品老司机| 欧美主播一区二区三区| 亚洲国产乱码最新视频| 欧美日韩国产一级| 奇米色777欧美一区二区| 正在播放亚洲一区| 日本vs亚洲vs韩国一区三区二区 | 亚洲六月丁香色婷婷综合久久| 91偷拍与自偷拍精品| 亚洲欧洲三级电影| 久久这里只精品最新地址| 免费看日韩a级影片| 精品99一区二区三区| 国产专区综合网| 国产精品美女久久久久久久久久久| 成人综合激情网| 亚洲视频一二三| 欧美日本精品一区二区三区| 水蜜桃久久夜色精品一区的特点 | 亚洲最大成人综合| 国产欧美精品区一区二区三区| 成人a免费在线看| 一区二区视频免费在线观看| 欧美日韩精品免费| 激情欧美一区二区三区在线观看| 久久久久88色偷偷免费| 99视频国产精品| 午夜欧美一区二区三区在线播放| 日韩一区二区三| 成人午夜伦理影院| 亚洲国产日韩综合久久精品| 日韩免费性生活视频播放| 国产suv精品一区二区6| 亚洲精品高清视频在线观看| 777奇米四色成人影色区| 国产精品一区二区久激情瑜伽| 亚洲欧美偷拍三级| 欧美tk—视频vk|