定义
String是不可变的字符常量 、StringBuffer和StringBuilder 是用于追加字符和修改的字符串常量
String 不可变和StringBuffer是可变的,其实StringBuffer底层实现了arryCopy()方法进行字符数组复制。
本质是创建了一个新的对象和String的原理其实是一致的,不过这种做法线程安全。
StringBuilder是线程不安全的,一般用于单线程模式效率很高。
StringBuffer是线程安全的,一般用于多线程模式。
示例代码
/*
* descript : 测试方法
*/
static Scanner sc = new Scanner(System.in); //导入Scanner扫描仪
static StringBuffer str = null; //接收字符
static String choose = ""; //选择项
@Test
public void test() {
boolean flag = true; //定义循环控制条件
System.out.println("请输入字符串:");
String s = sc.next();
do {
str = new StringBuffer(s);
System.out.println("1、添加字符");
System.out.println("2、修改字符");
System.out.println("3、删除字符");
System.out.println("4、退出");
choose = sc.next(); //接收选择的值
switch (choose.trim()) {
case "1":
insertStr();
break;
case "2":
updateStr();
break;
case "3":
deleteStr();
break;
case "4":
System.exit(0); //退出程序
break;
default:
System.out.println("输入错误,请重新输入");
break;
}
}while(flag);
}
/*
* 添加字符方法
*/
public static void insertStr() {
System.out.println("初始字符----\t"+str);
System.out.print("请输入需要添加的字符:\n");
String newstr = sc.next();
System.out.print("请输入需要添加的位置:\n");
int index = sc.nextInt();
//执行插入操作
str.insert(index-1, newstr);
System.out.println("添加后字符----\t"+str);
}
/*
* 修改字符方法
*/
public static void updateStr() {
System.out.println("初始字符----\t"+str);
System.out.print("请输入需要添加的字符:\n");
String newstr = sc.next();
System.out.print("请输入需要添加的起始位置:\n");
int start = sc.nextInt();
System.out.print("请输入需要添加的截止位置:\n");
int end = sc.nextInt();
//执行修改操作
str.replace(start+1, end, newstr);
System.out.println("修改后字符----\t"+str);
}
/*
* 删除方法
*/
public static void deleteStr() {
System.out.println("初始字符----\t"+str);
System.out.print("请输入需要删除的起始位置:\n");
int start = sc.nextInt();
System.out.print("请输入需要删除的截止位置:\n");
int end = sc.nextInt();
//执行修改操作
str.delete(start-1, end);
System.out.println("删除后字符----\t"+str);
}