StringBuilder 类表示可变字符的字符串。
名称 | 说明 |
---|---|
Capacity属性 | 获取或设置可包含在当前实例所分配的内存中的最大字符数 |
Length属性 | 获取或设置当前 StringBuilder 对象的长度 |
1.StringBuilder 类Capacity属性的默认值为16。
StringBuilder sb = new StringBuilder();
System.out.println("capacity:"+sb.capacity());
capacity:16
2.当StringBuilder 对象的Length属性值超过Capacity属性的长度时,StringBuilder 对象内部会重新构造一个字符数组。Capacity属性会变为以前的2倍。例如:Capacity属性的默认值为16,当追加字符串的长度超过16时,Capacity属性会扩充为32。
StringBuilder sb = new StringBuilder();
//追加长度为17的字符串
sb.Append("01234567890123456");
System.out.println("capacity:"+sb.capacity());
capacity:17
3.如果给Capacity属性设定一个值的话,当追加字符串的长度超过Capacity属性时,Capacity属性会变为所设定值的2倍。
StringBuilder sb = new StringBuilder();
//设置Capacity属性的值为10
sb.Capacity = 10;
//追加长度为17的字符串
sb.Append("01234567890123456");
System.out.println("capacity:"+sb.capacity());
capacity:20
4.当StringBuilder 对象的Length属性超过Capacity的2倍时,不管有没有设置过Capacity属性的值,最终Capacity属性会和Length属性相同。
StringBuilder sb = new StringBuilder();
//追加长度为33的字符串
sb.Append("012345678901234567890123456789012");
System.out.println("capacity:"+sb.capacity());
capacity:33
StringBuilder sb = new StringBuilder();
//设置Capacity属性的值为10
sb.Capacity = 10;
//追加长度为21的字符串
sb.Append("012345678901234567890");
System.out.println("capacity:"+sb.capacity());
capacity:21