目录
一. StringBuilder和StringBuffer
String类的特点:任何的字符串常量都是String对象,而且String的常量一旦声明不可改变,如果改变对象内容,改变的是其引用的指 向而已。
Java标准库提供了StringBuilder,它是一个可变对象,可以预分配缓冲区,这样,往StringBuilder中新增字符时,不会创建新的临时对象:
●String不可变字符串
●StringBuilder可变字符串public static void main(String[] args) { ////String不可变字符串 //StringBuilder可变字符串 //StringBuilder(); 无参构造创建,初始化数组char[]的容量为16,扩容<<1+2容量够,则直接返回newCapcity ,如果扩容后容量不够newCpacity = minCpacity //StringBuilder(容量); 初始化容量为指定容量的char[]数组 //StringBuilder(str); super(str.length() + 16); StringBuilder sb = new StringBuilder("我爱学习"); for (int i = 0; i < 100; i++) { // 追到到末尾 sb.append(i).append(","); } // insert追加内容到指定位置 sb.insert(0, "你好"); String str = null;// StringBuilder可以追加null sb.append(str); System.out.println(sb); }
扩容机制:
链式操作:
如果我们查看StringBuilder的源码,可以发现,进行链式操作的关键是,定义的append()方法会返回this,这样,就可以不断调用自身的其他方法。
一些方法:
●replace(start, end, str) 替换指定区间的字符串
StringBuilder sb = new StringBuilder("还是想考研"); // replace(start, end, str) 替换指定区间的字符串 sb.replace(0, 1, "zkt"); System.out.println(sb);// zkt是想考研●reverse() 反转
// 反转 StringBuilder sb = new StringBuilder("还是想考研"); sb.reverse(); System.out.println(sb);// 研考想是还●delete(起始,结束)::删除从start(包含)到end(不包含)位置的字符,start为0~length-1,end可以超出长度。
sb.delete(4, 8);●deleteCharAt(下标):删除某个索引位置上的字符,index不能越界
sb.deleteCharAt(5);细节:
由于StringBuilder和StringBuffer没有重写equals方法,所以还是使用的Object的equals方法。对比的是两个对象的地址是否相等。为了比较StringBuilder和StringBuffer字符串内容是否相等,需要先将其转换为string,String 由于重写了equals方法,所以使用equals函数是对比两个字符串内容是否相等。
StringBuilder sb1 = new String

最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



