Vous avez peut-être fait une erreur, le résultat devrait être :
16
3
Regardez le code source :
// minimumCapacity是当前已经存储的字符长度+要追加的字符长度
// value.length 是当前容量
// 所以新容量=max(2*旧容量+2,追加后的字符长度)
void expandCapacity(int minimumCapacity) {
int newCapacity = value.length * 2 + 2;
if (newCapacity - minimumCapacity < 0)
newCapacity = minimumCapacity;
if (newCapacity < 0) {
if (minimumCapacity < 0) // overflow
throw new OutOfMemoryError();
newCapacity = Integer.MAX_VALUE;
}
value = Arrays.copyOf(value, newCapacity);
}
La capacité ne sera étendue que lors de l'ajout. Lors de l'initialisation, en plus de la valeur par défaut de 16, elle peut être définie sur n'importe quel nombre.
Vous avez peut-être fait une erreur, le résultat devrait être :
Regardez le code source :
La capacité ne sera étendue que lors de l'ajout. Lors de l'initialisation, en plus de la valeur par défaut de 16, elle peut être définie sur n'importe quel nombre.
Exécutez ici pour voir la compilation et l'exécution de Java en ligne. Environnement d'exécution : java v1.7.0_80
.