ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
[toc] ### 一、可变字符串 String一旦被创建,值是不能改变,如果参与了操作,引用发生了变化,不是在原有的字符串上操作的,而是产生了一个<b>新的字符串</b>. StringBuffer创建后值可以发生改变(增删改),但地址不会发生变化。 ![](https://img.kancloud.cn/f8/56/f856fb7f04896587f2555f871b4b7aca_540x238.png) ### 二、StringBuffer内部实现 StringBuffer的内部实现采用数组,默认数组长度为16。 ![](https://img.kancloud.cn/f0/40/f0409257d774e7fe01fe9aba7a3747e0_857x216.png) ### 三、常用API #### append 添加字符串 ![](https://img.kancloud.cn/72/13/721363f754b04367921b21201f36e821_899x194.png) #### insert 指定位置插入字符串 ![](https://img.kancloud.cn/66/83/66836d2b98379f552ab4de2d75e07a3b_866x187.png) #### delete ![](https://img.kancloud.cn/65/c2/65c2b8d7254df6d5918c491eaa40ba2b_912x96.png) #### indexof ![](https://img.kancloud.cn/8a/c2/8ac24e623f1d718085cd28257fabe492_909x93.png) ### 四、String、StringBuffer和StringBuilder异同点 1.都是<b>final类</b>,都不允许被继承; 2.String长度是不可变的,StringBuffer和StringBuilder长度是可变的; 3.StringBuffer是线程安全的,StringBuilder不是线程安全的。 4.String类重写了equals方法,StringBuilder和StringBuffer没有equals方法,故用的是父类Object的equals方法。