大家好,
为什么建议将StringBuffer
/StringBuilder
对象的大小初始化为2^{1...n}(尽管通常会> 64)。这样做可以获得什么优势/优化?
大家好,
为什么建议将StringBuffer
/StringBuilder
对象的大小初始化为2^{1...n}(尽管通常会> 64)。这样做可以获得什么优势/优化?
StringBuilder
源代码中并没有暗示 capacity
应该是 2 的幂。是的,当增长缓冲区时,每次都会将其加倍,但这并不意味着使用初始大小为 100 来初始化 StringBuilder
不是最优的选择。 - denis.solonenkoint newCapacity = (value.length + 1) * 2;
,因此即使您从一个二次幂开始,它也不会保持为二次幂。 - clstrfsckStringBuilder\Buffer
,但我从未关注过初始化时使用的默认值和容量加倍。@Oscar Gomez +1 - MalsR