String、StringBuffer、StringBuilder区别及实例

定义

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);
}

String、StringBuffer、StringBuilder区别及实例_第1张图片

你可能感兴趣的:(Java基础常用String类,java,String,StringBuffer)