摘要: 从API查到capacity的作用是查看StringBuffer的容器容量是多少,刚开始纳闷这个跟length的区别在哪?试验了几次感觉有点不解。所以直接跟进源码分析。直接通过new StringBuffer(String str);时,capacity是str.length+16,从源码可知:如果直接是new StringBuffer(),则capacity为16,见下图:如果小于16则默认容器的大小为16。如果大于16则会调用expandCapacity 函数进行容量的扩展。由源码可以看到扩展的规则是把旧的容量(value的长度)*2+2,然后与现有的比较,如果小于则把现有的容量当做新的, 阅读全文