StringBuffer擴容
StringBuffer、StringBuilder都繼承於AbstractStringBuilder
其中,StringBuffer是線程安全的,StringBuilder是線程不安全的。
下圖爲AbstractStringBuilder中擴容源碼:
minCapacity:append操作插入字符串後當前的 byte[]數組的length
oldCapacity:當前byte[]數組的容量(初始大小爲16),當length超過了byte[]數組的容量就進行擴容
newCapacity:新的容量對oldCapacity右移1位再加2
例子:
以初始容量16爲例;10000(16的二進制)右移1位 100000
再加2,2的二進制爲10 相加後爲100010 轉換爲十進制就是34