package StringAndStringBufferedReaderAndStringBuilderTest;
/*String类为不可变类,一旦生成字符串时将不可改变,所以进行字符串操作时将会产生很多字符串常量,
* StringBuilder和StringBufferedReader用法相同,不同在于buffer是线程安全的,
* 而Builder并没有实现安全线程功能,所以buffer性能略低于Builder。在操作字符串时优先使
* 用Builder。
*/
public class StringAndStringBufferedReaderAndStringBuilderTest {
public static void main(String[] args){
/*String、StringBuilder、StringBuilder操作字符串*/
System.out.println("创建一个空的字符串:" + new String());
String str5 = new String("abcdefghijklmn");
String str6 = new String("abcdefghijklmnopqrst");
System.out.println("返回str5下标为5的元素:" + str5.charAt(5));//返回特定元素下标
System.out.println("str6与str5作比较:" + str6.compareTo(str5));//两个字符串作比较
System.out.println("str5 + str6 : " + str5.concat(str6));//连接两个字符串
System.out.println("str5 + str6(直接相加运算): " + str5 + str6);//直接相加作连接运算
char[] data = {'a','b','c','d'};
String str7 = null;
str7 = String.copyValueOf(data);//将数组转换为字符串,下同
str7 = new String(data);
System.out.println("将字符数组转换为字符串:" + str7);
System.out.println("比较str6与str7是否相等:" + str6.equals(str7));
byte[] byte1 = str7.getBytes();
System.out.println("输出由字符串所转换的byte数组:");
for(byte i : byte1){
System.out.println(i);
}
char[] char1 = str7.toCharArray();//字符串-→字符数组
System.out.println("输出由字符串所转换的char数组:");
for(char i : char1){
System.out.println(i);
}
String str8 = str7.substring(2);
System.out.println("str7 = " + str7 + " , 获取str7从第二个元素开始的子集:" + str8);
/*测试StringBuilder类的方法操作字符串*/
StringBuilder sb = new StringBuilder("123");
System.out.println("创建一个StringBuilder对象:" + sb);
sb.append("caikai");//添加字符串
System.out.println("字符串123追加 caikai 字符:" + sb);
sb.insert(0, "0");//指定位置插入字符串
System.out.println("在第0个元素插入元素 0 :" + sb);
sb.replace(7, 10,"cai");//替换字符串
System.out.println("将kai替换为cai:" + sb);
sb.delete(0, 1);//删除字符串
System.out.println("删除第0个元素:" + sb);
System.out.println("打印字符串下标为2的元素:" + sb.charAt(2));
sb.delete(3, sb.length());
System.out.println("将字符串还原为最初字符串:" + sb);
}
}