字符串的设计关注的是字符串的重用,对于修改字符串而言,效率与资源消耗都比较大,为此字符串不适合频繁的修改。
对此,java提供了一个专门用于修改字符串内容的类:
StringBulider和StringBuffer。其内部维护一个可变的char数组,所以修改都是建立在一个StringBuilder或StringBuffer对象上完成,不会反复创建新对象。并且其还提供了便于修改字符串内容的相关方法,
包括是操作有:增,删,改,插。
StringBuilder和StringBuffer都是用来修改字符串,两者的功能和方法都是一致的,两者的不同在于:在线程安全上,StringBuilder是线程不安全的,而StringBuffer是线程安全的。
StringBuffer的方法被Synchronized修饰,所以是线程安全的,StringBuilder的方法没有被修饰,所以线程不安全。
//默认创建内部表示空字符串
//StringBuilder builder = new StringBuilder();
String string = "努力学习java";
StringBuilder builder = new StringBuilder(string);
/*
* append():向当前字符串末尾追加给定内容
*/
builder.append(",为了找个好工作!");
//获取builder内部修改好的字符串
string = builder.toString();
System.out.println(string);//努力学习java,为了找个好工作!
/*
* replace():将当前字符串指定范围内的内容替换为给定字符串(修改部分内容)
*/ // 9 16
//努力学习java,为了找个好工作!
//努力学习java,就是为了改变世界!
builder.replace(9, 16, "就是为了改变世界");
System.out.println(builder.toString());//努力学习java,就是为了改变世界!
/*
* delete():删除当前字符串部分内容
*/
//努力学习java,就是为了改变世界!
//,就是为了改变世界
builder.delete(0,8);
System.out.println(builder.toString());//,就是为了改变世界
/*
* insert():将指定内容插入到指定位置
*/
//,就是为了改变世界
//,活着就是为了改变世界
builder.insert(1, "活着");
System.out.println(builder.toString());//,活着就是为了改变世界