共同学习Java源代码--常用工具类--AbstractStringBuilder(五)
来源:互联网 发布:淘宝被处罚不能传宝贝 编辑:程序博客网 时间:2024/06/05 02:51
if (i == Integer.MIN_VALUE) {
append("-2147483648");
return this;
}
int appendedLength = (i < 0) ? Integer.stringSize(-i) + 1
: Integer.stringSize(i);
int spaceNeeded = count + appendedLength;
ensureCapacityInternal(spaceNeeded);
Integer.getChars(i, spaceNeeded, value);
count = spaceNeeded;
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;
}
这两个方法一起看就行了,就是拼接int和long的。这两个方法都是先判断参数是否是这两个数据类型的最小值,如果是的话,直接拼接一个常量并返回。
然后计算要拼接的字符数,如果要拼接的是负数那么要拼接的字符数就是2,否则就是1。
然后给value扩容,然后将参数复制到扩容后的value中,然后为count赋值,最后返回本对象。
public AbstractStringBuilder append(float f) {
FloatingDecimal.appendTo(f,this);
return this;
}
public AbstractStringBuilder append(double d) {
FloatingDecimal.appendTo(d,this);
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) {
System.arraycopy(value, start+len, value, start, count-end);
count -= len;
}
return this;
}
这个方法是删除指定区间内字符的方法。就是将指定区间之后的字符复制到指定区间开始处。
public AbstractStringBuilder appendCodePoint(int codePoint) {
final int count = this.count;
if (Character.isBmpCodePoint(codePoint)) {
ensureCapacityInternal(count + 1);
value[count] = (char) codePoint;
this.count = count + 1;
} else if (Character.isValidCodePoint(codePoint)) {
ensureCapacityInternal(count + 2);
Character.toSurrogates(codePoint, value, count);
this.count = count + 2;
} else {
throw new IllegalArgumentException();
}
return this;
}
这个方法是拼接代码点的方法。先判断是否是BMP代码点,如果是就将value扩容,然后将参数拼接在value的结尾,然后count自加一。如果是有效的代码点,那么先给value扩容两位,然后调用Character类的方法将参数拼接在value后面,然后count自加二。
最后返回本对象。
- 共同学习Java源代码--常用工具类--AbstractStringBuilder(五)
- 共同学习Java源代码--常用工具类--AbstractStringBuilder(一)
- 共同学习Java源代码--常用工具类--AbstractStringBuilder(二)
- 共同学习Java源代码--常用工具类--AbstractStringBuilder(三)
- 共同学习Java源代码--常用工具类--AbstractStringBuilder(四)
- 共同学习Java源代码--常用工具类--AbstractStringBuilder(六)
- 共同学习Java源代码--常用工具类--AbstractStringBuilder(七)
- 共同学习Java源代码--常用工具类--AbstractStringBuilder(八)
- 共同学习Java源代码--常用工具类--AbstractStringBuilder(九)
- 共同学习Java源代码--常用工具类--StringBuffer(一)
- 共同学习Java源代码--常用工具类--StringBuffer(二)
- 共同学习Java源代码--常用工具类--StringBuffer(三)
- 共同学习Java源代码--常用工具类--StringBuffer(四)
- 共同学习Java源代码--数据结构--AbstractList抽象类(五)
- 共同学习Java源代码--数据结构--ArrayList类(五)
- 共同学习Java源代码--数据结构--LinkedList类(五)
- 共同学习Java源代码-数据结构-AbstractMap抽象类(五)
- 共同学习Java源代码-数据结构-HashMap(五)
- Android SensorManager分析
- 字符串处理------旋转
- UI控件--桌面小组件(1)
- ZOJ--Highway Project(spfa+两级选择)
- Ubuntu 下压缩文件的压缩和解压方式总结
- 共同学习Java源代码--常用工具类--AbstractStringBuilder(五)
- 最短作业优先(百度笔试题2)
- 微信学习_02_开发模式接入
- MVC,MVP 和 MVVM 的图示
- zoj Apples and Ideas (水)
- Android百度地图开发(一):地图下载与配置
- Centos 6.x安装CodeBlocks
- 关于inet_ntoa函数的思考
- 安卓界面的下拉列表制作