当前位置: 首页 > news >正文

湖南做网站 联系磐石网络/企业推广是做什么的

湖南做网站 联系磐石网络,企业推广是做什么的,海口做网站上海公司,php和python做网站StringBuilder 2015.01.15By 970655147如果大家有过字符串拼接的经验的话, 可能对于这个类不会陌生, 因为直接使用String拼接多个字符串的话, 开销略大, 那么这种场景下StringBuilder/ StringBuffer, 就闪亮登场了 start -> 声明 , 大家可以看看注释 /*** A mutable seq…

StringBuilder

                                                            2015.01.15By 970655147

如果大家有过字符串拼接的经验的话, 可能对于这个类不会陌生, 因为直接使用String拼接多个字符串的话, 开销略大, 那么这种场景下StringBuilder/ StringBuffer, 就闪亮登场了

start ->

声明

, 大家可以看看注释

/*** A mutable sequence of characters.  This class provides an API compatible* with <code>StringBuffer</code>, but with no guarantee of synchronization.* This class is designed for use as a drop-in replacement for* <code>StringBuffer</code> in places where the string buffer was being* used by a single thread (as is generally the case).   Where possible,* it is recommended that this class be used in preference to* <code>StringBuffer</code> as it will be faster under most implementations.** <p>The principal operations on a <code>StringBuilder</code> are the* <code>append</code> and <code>insert</code> methods, which are* overloaded so as to accept data of any type. Each effectively* converts a given datum to a string and then appends or inserts the* characters of that string to the string builder. The* <code>append</code> method always adds these characters at the end* of the builder; the <code>insert</code> method adds the characters at* a specified point.* <p>* For example, if <code>z</code> refers to a string builder object* whose current contents are "<code>start</code>", then* the method call <code>z.append("le")</code> would cause the string* builder to contain "<code>startle</code>", whereas* <code>z.insert(4, "le")</code> would alter the string builder to* contain "<code>starlet</code>".* <p>* In general, if sb refers to an instance of a <code>StringBuilder</code>,* then <code>sb.append(x)</code> has the same effect as* <code>sb.insert(sb.length(),&nbsp;x)</code>.** Every string builder has a capacity. As long as the length of the* character sequence contained in the string builder does not exceed* the capacity, it is not necessary to allocate a new internal* buffer. If the internal buffer overflows, it is automatically made larger.** <p>Instances of <code>StringBuilder</code> are not safe for* use by multiple threads. If such synchronization is required then it is* recommended that {@link java.lang.StringBuffer} be used.** @author      Michael McCloskey* @see         java.lang.StringBuffer* @see         java.lang.String* @since       1.5*/
public final class StringBuilderextends AbstractStringBuilderimplements java.io.Serializable, CharSequence

StringBuilder. append(Object/ String/ StringBuilder/ CharSequence obj)

    public StringBuilder append(Object obj) {return append(String.valueOf(obj));}public StringBuilder append(String str) {super.append(str);return this;}public StringBuilder append(StringBuffer sb) {super.append(sb);return this;}public StringBuilder append(CharSequence s) {if (s == null)s = "null";if (s instanceof String)return this.append((String)s);if (s instanceof StringBuffer)return this.append((StringBuffer)s);if (s instanceof StringBuilder)return this.append((StringBuilder)s);return this.append(s, 0, s.length());}public StringBuilder append(CharSequence s, int start, int end) {super.append(s, start, end);return this;}public AbstractStringBuilder append(CharSequence s, int start, int end) {if (s == null)s = "null";if ((start < 0) || (start > end) || (end > s.length()))throw new IndexOutOfBoundsException("start " + start + ", end " + end + ", s.length() "+ s.length());int len = end - start;// 确保空间足够ensureCapacityInternal(count + len);// 拼接数据for (int i = start, j = count; i < end; i++, j++)value[j] = s.charAt(i);count += len;return this;}public AbstractStringBuilder append(String str) {if (str == null) str = "null";int len = str.length();// 确保value能存放append str 不够则扩容ensureCapacityInternal(count + len);// 将str的字符拼接到value后面str.getChars(0, len, value, count);count += len;return this;}private void ensureCapacityInternal(int minimumCapacity) {// overflow-conscious code// 如果需求的minCapacity大于value.length 则扩容if (minimumCapacity - value.length > 0)expandCapacity(minimumCapacity);}void expandCapacity(int minimumCapacity) {// 默认的扩容机制int newCapacity = value.length * 2 + 2;// 如果默认的扩容小了 则扩大至minCapacityif (newCapacity - minimumCapacity < 0)newCapacity = minimumCapacity;if (newCapacity < 0) {if (minimumCapacity < 0) // overflowthrow new OutOfMemoryError();newCapacity = Integer.MAX_VALUE;}// 拷贝value的数据到新的Array中value = Arrays.copyOf(value, newCapacity);}

StringBuilder. append(char[] str)

    public StringBuilder append(char[] str) {super.append(str);return this;}public AbstractStringBuilder append(char[] str) {int len = str.length;// 确保空间,拼接数据ensureCapacityInternal(count + len);System.arraycopy(str, 0, value, count, len);count += len;return this;}

StringBuilder. append(char[] str, int offset, int len)

    public StringBuilder append(char[] str, int offset, int len) {super.append(str, offset, len);return this;}public AbstractStringBuilder append(char str[], int offset, int len) {if (len > 0)                // let arraycopy report AIOOBE for len < 0ensureCapacityInternal(count + len);System.arraycopy(str, offset, value, count, len);count += len;return this;}

StringBuilder. appedn(boolean/ int/long// float/ double b)

    public StringBuilder append(boolean b) {super.append(b);return this;}public AbstractStringBuilder append(boolean b) {if (b) {ensureCapacityInternal(count + 4);value[count++] = 't';value[count++] = 'r';value[count++] = 'u';value[count++] = 'e';} else {ensureCapacityInternal(count + 5);value[count++] = 'f';value[count++] = 'a';value[count++] = 'l';value[count++] = 's';value[count++] = 'e';}return this;}public StringBuilder append(char c) {super.append(c);return this;}public AbstractStringBuilder append(char c) {ensureCapacityInternal(count + 1);value[count++] = c;return this;}public StringBuilder append(int i) {super.append(i);return this;}public AbstractStringBuilder append(int i) {if (i == Integer.MIN_VALUE) {append("-2147483648");return this;}// 存放i需要的长度,负数+1(“-”)int appendedLength = (i < 0) ? Integer.stringSize(-i) + 1: Integer.stringSize(i);int spaceNeeded = count + appendedLength;ensureCapacityInternal(spaceNeeded);// 填充i的字符数据到valueInteger.getChars(i, spaceNeeded, value);count = spaceNeeded;return this;}public StringBuilder append(long lng) {super.append(lng);return this;}public AbstractStringBuilder append(long l) {if (l == Long.MIN_VALUE) {append("-9223372036854775808");return this;}int appendedLength = (l < 0) ? Long.stringSize(-l) + 1: Long.stringSize(l);int spaceNeeded = count + appendedLength;ensureCapacityInternal(spaceNeeded);Long.getChars(l, spaceNeeded, value);count = spaceNeeded;return this;}public StringBuilder append(float f) {super.append(f);return this;}public AbstractStringBuilder append(float f) {new FloatingDecimal(f).appendTo(this);return this;}public StringBuilder append(double d) {super.append(d);return this;}public AbstractStringBuilder append(double d) {new FloatingDecimal(d).appendTo(this);return this;}

StringBuilder. appendCodePoint(int codePoint)

    public StringBuilder appendCodePoint(int codePoint) {super.appendCodePoint(codePoint);return this;}public AbstractStringBuilder appendCodePoint(int codePoint) {final int count = this.count;// 判定codePoint是否在Basic Multilingual Plane范围内,如果是的话 添加1个字符即可if (Character.isBmpCodePoint(codePoint)) {ensureCapacityInternal(count + 1);value[count] = (char) codePoint;this.count = count + 1;// 判断codePoint是否是一个合法Unicode} else if (Character.isValidCodePoint(codePoint)) {ensureCapacityInternal(count + 2);Character.toSurrogates(codePoint, value, count);this.count = count + 2;} else {throw new IllegalArgumentException();}return this;}public static boolean isBmpCodePoint(int codePoint) {return codePoint >>> 16 == 0;// Optimized form of://     codePoint >= MIN_VALUE && codePoint <= MAX_VALUE// We consistently use logical shift (>>>) to facilitate// additional runtime optimizations.}public static boolean isValidCodePoint(int codePoint) {// Optimized form of://     codePoint >= MIN_CODE_POINT && codePoint <= MAX_CODE_POINTint plane = codePoint >>> 16;return plane < ((MAX_CODE_POINT + 1) >>> 16);}

StringBuilder. delete(int start, int end)

    public StringBuilder delete(int start, int end) {super.delete(start, end);return this;}public AbstractStringBuilder delete(int start, int end) {if (start < 0)throw new StringIndexOutOfBoundsException(start);if (end > count)end = count;if (start > end)throw new StringIndexOutOfBoundsException();int len = end - start;if (len > 0) {// 将start+len的字符移动到start处 迭代count-end次System.arraycopy(value, start+len, value, start, count-end);count -= len;}return this;}

StringBuilder. deleteCharAt(int index)

    public StringBuilder deleteCharAt(int index) {super.deleteCharAt(index);return this;}public AbstractStringBuilder deleteCharAt(int index) {if ((index < 0) || (index >= count))throw new StringIndexOutOfBoundsException(index);// 将index+1的字符移动到index处 迭代count-index-1次System.arraycopy(value, index+1, value, index, count-index-1);count--;return this;}

StringBuilder. replace(int start, int end, String str)

    public StringBuilder replace(int start, int end, String str) {super.replace(start, end, str);return this;}public AbstractStringBuilder replace(int start, int end, String str) {if (start < 0)throw new StringIndexOutOfBoundsException(start);if (start > count)throw new StringIndexOutOfBoundsException("start > length()");if (start > end)throw new StringIndexOutOfBoundsException("start > end");if (end > count)end = count;int len = str.length();int newCount = count + len - (end - start);ensureCapacityInternal(newCount);// 将index+1的字符移动到start + len处 迭代count-end次// start –> start+len 处的空间留给strSystem.arraycopy(value, end, value, start + len, count - end);// 填充str的数据 start–> start+lenstr.getChars(value, start);count = newCount;return this;}

StringBuilder. insert(int index, char[] str, int offset,int len)

    public StringBuilder insert(int index, char[] str, int offset,int len){super.insert(index, str, offset, len);return this;}public AbstractStringBuilder insert(int index, char[] str, int offset,int len){if ((index < 0) || (index > length()))throw new StringIndexOutOfBoundsException(index);if ((offset < 0) || (len < 0) || (offset > str.length - len))throw new StringIndexOutOfBoundsException("offset " + offset + ", len " + len + ", str.length "+ str.length);ensureCapacityInternal(count + len);// 将index处的字符移动到index+len处 迭代count-index次System.arraycopy(value, index, value, index + len, count - index);// 将str的字符移动到value的index处 完成插入数据System.arraycopy(str, offset, value, index, len);count += len;return this;}

StringBuilder. insert(int offset, Object obj)

    public StringBuilder insert(int offset, Object obj) {return insert(offset, String.valueOf(obj));}public StringBuilder insert(int offset, String str) {super.insert(offset, str);return this;}public AbstractStringBuilder insert(int offset, String str) {if ((offset < 0) || (offset > length()))throw new StringIndexOutOfBoundsException(offset);if (str == null)str = "null";int len = str.length();ensureCapacityInternal(count + len);// 将offset处的字符移动到offset+str.length()处 迭代count-offset次System.arraycopy(value, offset, value, offset + len, count - offset);// 填充str的字符数据str.getChars(value, offset);count += len;return this;}

StringBuilder. insert(int offset, char[] str)

    public StringBuilder insert(int offset, char[] str) {super.insert(offset, str);return this;}public AbstractStringBuilder insert(int offset, char[]/ CharSequence str) {if ((offset < 0) || (offset > length()))throw new StringIndexOutOfBoundsException(offset);int len = str.length;ensureCapacityInternal(count + len);// 将offset处的字符移动到offset+str.length()处 迭代count-offset次, 填充str的字符数据System.arraycopy(value, offset, value, offset + len, count - offset);System.arraycopy(str, 0, value, offset, len);count += len;return this;}public StringBuilder insert(int dstOffset, CharSequence s) {if (s == null)s = "null";if (s instanceof String)return this.insert(dstOffset, (String)s);return this.insert(dstOffset, s, 0, s.length());
}public StringBuilder insert(int dstOffset, CharSequence s, int start, int end){super.insert(dstOffset, s, start, end);return this;}public AbstractStringBuilder insert(int dstOffset, CharSequence s, int start, int end) {if (s == null)s = "null";if ((dstOffset < 0) || (dstOffset > this.length()))throw new IndexOutOfBoundsException("dstOffset "+dstOffset);if ((start < 0) || (end < 0) || (start > end) || (end > s.length()))throw new IndexOutOfBoundsException("start " + start + ", end " + end + ", s.length() "+ s.length());int len = end - start;ensureCapacityInternal(count + len);
// 将offset处的字符移动到offset+len处 迭代count-offset次, 填充str的字符数据System.arraycopy(value, dstOffset, value, dstOffset + len, count - dstOffset);for (int i=start; i<end; i++)value[dstOffset++] = s.charAt(i);count += len;return this;}

StringBuilder. insert(int offset, boolean/ int/ long/ float/ double b)

    public StringBuilder insert(int offset, boolean b) {super.insert(offset, b);return this;}public AbstractStringBuilder insert(int offset, boolean b) {return insert(offset, String.valueOf(b));}public StringBuilder insert(int offset, char c) {super.insert(offset, c);return this;}public AbstractStringBuilder insert(int offset, char c) {ensureCapacityInternal(count + 1);System.arraycopy(value, offset, value, offset + 1, count - offset);value[offset] = c;count += 1;return this;}public StringBuilder insert(int offset, int i) {return insert(offset, String.valueOf(i));}public StringBuilder insert(int offset, long l) {return insert(offset, String.valueOf(l));}public StringBuilder insert(int offset, float f) {return insert(offset, String.valueOf(f));}public StringBuilder insert(int offset, double d) {return insert(offset, String.valueOf(d));}

StringBuilder. indexOf(String str)

    public int indexOf(String str) {return indexOf(str, 0);}public int indexOf(String str, int fromIndex) {return String.indexOf(value, 0, count,str.toCharArray(), 0, str.length(), fromIndex);}

StringBuilder. lastIndexOf(String str)

    public int lastIndexOf(String str) {return lastIndexOf(str, count);}public int lastIndexOf(String str, int fromIndex) {return String.lastIndexOf(value, 0, count,str.toCharArray(), 0, str.length(), fromIndex);}

StringBuilder. reverse()

    public StringBuilder reverse() {super.reverse();return this;}public AbstractStringBuilder reverse() {boolean hasSurrogate = false;int n = count - 1;// 逆转字符  从中间开始逆转..for (int j = (n-1) >> 1; j >= 0; --j) {char temp = value[j];char temp2 = value[n - j];if (!hasSurrogate) {hasSurrogate = (temp >= Character.MIN_SURROGATE && temp <= Character.MAX_SURROGATE)|| (temp2 >= Character.MIN_SURROGATE && temp2 <= Character.MAX_SURROGATE);}value[j] = temp2;value[n - j] = temp;}// 如果存在 surrogate pairs 则将其逆转回来if (hasSurrogate) {// Reverse back all valid surrogate pairsfor (int i = 0; i < count - 1; i++) {char c2 = value[i];if (Character.isLowSurrogate(c2)) {char c1 = value[i + 1];if (Character.isHighSurrogate(c1)) {value[i++] = c1;value[i] = c2;}}}}return this;}

StringBuilder.toString()

    public String toString() {// Create a copy, don't share the arrayreturn new String(value, 0, count);}

->

ok, StringBuilder 到此结束了

这个类是非常常用的也是非常重要的, 建议详详细细的分析一遍 !
StringBuffer 和StringBuilder的内容基本一致, 不过每一个业务方法都加上了synchronized关键字, 保证了线程的安全


资源下载 : http://download.csdn.net/detail/u011039332/9051805

注 : 因为作者的水平有限,必然可能出现一些bug, 所以请大家指出!

http://www.lbrq.cn/news/833059.html

相关文章:

  • 网站地图在线生成/seo专业术语
  • 佛山网站建设网络推广/易推广
  • 互联网公司怎么盈利/购买seo关键词排名优化官网
  • 惠州网络营销公司/seo和sem的区别
  • wordpress获取所有标签/seo网站优化外包
  • 网站建设毕业设计选题/seo百度站长工具查询
  • 公司做网站报价/百度站长app
  • 北京网站建设优化学校/网络营销运营推广
  • 网站建设思企互联/百度公司在哪里
  • 连云建网站公司/简述企业网站如何推广
  • 经典wordpress网站/下载百度官方网站
  • 网站布局教程/google app下载
  • 如何将自己做网站放上网/山东seo推广公司
  • 温州微网站开发/网络推广员为什么做不长
  • 做网站选择系统/seo推广一个月见效
  • vuejs做视频网站/大数据营销是什么
  • 微信制作网站公司简介/黑帽seo排名优化
  • 宁波专业网站建设公司/网络培训平台
  • 网站备案 谁接入谁负责/域名购买哪个网站好
  • 个人免费注册公司网站/百度上首页
  • 合肥做网站web0551/相亲网站排名前十名
  • 品牌形象宣传策划方案/湖南关键词优化推荐
  • 嘉兴做网站/湖南靠谱关键词优化
  • gps建站教程视频/德州网站建设优化
  • 天津seo培训哪家好/搜索引擎优化核心
  • 集团网站设计建设/ai智能搜索引擎
  • 烟台做网站排名/企业培训师
  • 湖南星大建设集团有限公司网站/百度手机快速排名点击软件
  • 企业电商网站商城建设/b2b免费发布信息网站
  • 什么是网站收录/中国站长站
  • CAN通信驱动开发注意事项
  • 上网行为管理-web认证服务
  • Android性能优化之启动优化
  • AI(day10)模块化编程概念(模块、包、导入)及常见系统模块总结和第三方模块管理
  • 【怜渠客】简单实现手机云控Windows电脑锁屏
  • SVN使用过程中的几个疑问与解答