一、append(int i),来自StringBuffer的父类AbstractStringBuilder源码
步骤:
1、围观源码
public AbstractStringBuilder append(int i) {
if (i == Integer.MIN_VALUE) {
append("-2147483648");
return this;
}
// stringSizeOfInt,判断输入的整数i占多少位,如负数+1,方法源码往后看。
int appendedLength = (i < 0) ? stringSizeOfInt(-i) + 1
: stringSizeOfInt(i);
int spaceNeeded = count + appendedLength;
if (spaceNeeded > value.length) // 检查容量,是否需扩容
expandCapacity(spaceNeeded);
Integer.getChars(i, spaceNeeded, value); // 把整型i以字符的形式加进buffer(value)中,getChars源码较复杂,暂时未看。
count = spaceNeeded; //更新count长度。
return this;
}
2、围观占位表和整数占位算法。
//占位表
final static int [] sizeTable = { 9, 99, 999, 9999, 99999, 999999, 9999999,99999999, 999999999, Integer.MAX_VALUE };
// Requires positive x
static int stringSizeOfInt(int x) {
for (int i=0; ; i++)
if (x <= sizeTable[i]) // 无限循环将整型x与占位表逐一对比,例如x=100,将与占位表索引为2的999匹配。
return i+1; //返回2+1,占3位。
}
3、顺便多看一下append(long l)的源码,其实内部原理跟append(int i)原理一样。
// Requires positive x
static int stringSizeOfLong(long x) {
long p = 10;
for (int i=1; i<19; i++) {
if (x < p) // 与两位数10比较,小于返回占一位
return i;
p = 10*p; //如此类推,小于100占2位
}
return 19; // 最大19位
}
分享到:
相关推荐
StringBuffer类的常用方法.md
String StringBuffer和StringBuilder 区别之源码解析 从源码角度简单对它们之间的区别进行了验证
StringBuffer & StringBuilder 源码分析 StringBuffer 和 StringBuilder 是 Java 语言中两个常用的字符串操作类,它们都是 CharSequence 接口的实现类,并且都继承了 AbstractStringBuilder 类。下面是对这两个类的...
主要针对Java中两个常用的操作字符串的类 StringBuilder和StringBuffer进行源码分析,感兴趣的小伙伴们可以参考一下
* [方法名]:CheckReplace (特殊字符 转换 方法) [功 能]:字符串转换函数,(用于出库时转换特殊格式字符) * * @param [ s ]:要转换的字符串 * @return [返回]:转换后的安全的str */ public static String ...
//创建一个StringBuffer类 ,此类有两个方法:一个是append方法一个是toString方法 function StringBuffer() { this.__strings__ = []; }; StringBuffer.prototype.append = function(str) { this.__strings__....
主要给大家介绍了关于JDK源码分析之String、StringBuilder和StringBuffer的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用jdk具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
介绍了String、StringBuffer、StringBuilder的使用方法,以及理论知识
StringBuffer的常用方法实例,如:append、insert等等。其中,StringBuffer与String的区别详细做了例子。
针对String的详细介绍针对String的详细介绍针对String的详细介绍针对String的详细介绍针对String的详细介绍针对String的详细介绍针对String的详细介绍针对String的详细介绍针对String的详细介绍针对String的详细介绍...
StringBuffer解析
计算机后端-Java-Java核心基础-第21章 常用类 20. StringBuffer的源码分析.avi
计算机后端-Java-Java核心基础-第21章 常用类 21. StringBuffer中的常用方法.avi
string和Stringbuffer使用方法浅谈
String、StringBuilder和StringBuffer的区别 String、StringBuilder和StringBuffer的区别 String、StringBuilder和StringBuffer的区别
一、StringBuffer和StringBuilder的区别是什么? Java中的StringBuffer和StringBuilder类是用于处理字符串的可变对象; 它们与String类类似,但是不同之处在于,StringBuffer和StringBuilder可以修改字符串内容,而...
如果我们的程序是在单线程下运行,或者是不必考虑到线程同步问题,我们应该优先使用StringBuilder类;如果要保证线程安全,自然是...StringBuffer常用方法 (由于StringBuffer和StringBuilder在使用上几乎一
Java中StringBuffer的常用方法.pdf 学习资料 复习资料 教学资源
StringBuffer练习.doc