StringBuilder简单总结与源码预览。
之前写StringBuilder对象默认简写为sb,被说是骂人不让用了,现在写成strBuilder了。大家一般写什么呢
StringBuilder预留空间设计
已知Redis的String结构是通过预留空间的形式来避免频繁地分配空间。
那么Java中有没有类似的设计呢?有的,StringBuilder就是
在append方法可以看到有一个经典的扩容机制。
StringBuilder作为栈使用
栈是一种先进后出的结构,StringBuilder的方法可以做到模拟栈的实现。
- 栈的 push 操作 :
- StringBuilder.append(char c):将字符追加到末尾,相当于栈的 push 操作。
- 例子:sb.append('a') 就像把 'a' 压入栈顶。
- 栈的 pop 操作 :
- StringBuilder.deleteCharAt(int index) 或 StringBuilder.setLength(int newLength):删除末尾字符,相当于栈的 pop 操作。
- 常用方式:sb.setLength(sb.length() - 1) 删除最后一个字符。
- 栈的 peek 操作 :
- StringBuilder.charAt(int index):访问末尾字符,相当于栈的 peek。
- 例子:sb.charAt(sb.length() - 1) 获取栈顶字符。
- 其他便利性 :
- StringBuilder 直接支持字符串操作,最终可以通过 toString() 转换为结果字符串。
- 它是动态的,无需预先分配固定大小(不像数组实现的栈)。
StringBuilder使用时机
从Java 1.5开始 单行或少量 (2~3个)String 拼接会被编译器优化为 StringBuilder,性能差异不大。
循环或动态拼接用 StringBuilder,避免性能瓶颈。