public class TestStringBuilder {
public static void main(String[] args) {
//StringBuilder(String str) - 根据字符串来构造对象。
StringBuilder sb1 = new StringBuilder("hello");
System.out.println("sb1 = " + sb1); //调用toString() hello
//- 初始容量为:16 + 字符串参数的长度。
//- 该类没有重写equals()和hashCode()方法,但重写了toString()方法。
//int capacity() - 用于获取当前对象的容量并返回。
System.out.println("容量是: " + sb1.capacity()); //21 = 16 + 5
//int length() - 用于返回当前对象的字符个数。
System.out.println("字符个数是: " + sb1.length()); // 5
System.out.println("------------------------");
//【插入】实现向字符串对象sb1中插入指定的字符串内容
//StringBuilder sb2 = sb1.insert(-1,"abcd); 编译正常,运行异常
//StringBuilder类描述的字符序列本身可以改变
//StringBuilder insert(int offset, String str)
//- 用于将str插入到当前字符串中offset的位置并返回。
StringBuilder sb2 = sb1.insert(0, "abcd");
System.out.println("sb2 = " + sb2); //abcdhello
System.out.println("sb1 = " + sb1); //abcdhello
//String类描述的字符串本身不会改变
String s1 = "hello";
String s2 = s1.toUpperCase();
System.out.println("s2 = " + s2); //HELLO
System.out.println("s1 = " + s1); //hello
//既然调用方法后调用对象本身已经改变了,为啥还返回一模一样的结果呢?
//解析:为了连续调用
//sb1.insert(0, "a").insert(1, true).append("hello").append("too");
//sb1.insert(0, "12");
//sb1.append('c');
sb1.insert(4, "1234");
System.out.println("sb1 = " + sb1); //abcd1234hello
sb1.insert(13, "ABCD");
System.out.println("sb1 = " + sb1); //abcd1234helloABCD
System.out.println("---------------------------");
//StringBuilder append(String str)
//- 用于将str追加到当前字符串的末尾位置。
//向字符串末尾追加内容
StringBuilder sb3 = sb1.append("world");
System.out.println("sb1 = " + sb1); //abcd1234helloABCDworld
System.out.println("sb3 = " + sb3); //abcd1234helloABCDworld
//当插入的字符串超过初始容量时,怎会自动扩大容量
System.out.println("容量是:" + sb1.capacity()); //44
System.out.println("字符个数是: " + sb1.length()); //22
System.out.println("-----------------------------");
//【删】实现字符串中内容的删除,"hello"移除
sb1.delete(8, 13);
System.out.println("sb1 = " + sb1); //abcd1234ABCDworld
System.out.println("------------------------------");
//【改】现在字符串中内容的修改,"ABCD"替换为"abcd"
sb1.replace(8, 12, "abcd");
System.out.println("sb1 = " + sb1); //abcd1234abcdworld
System.out.println("-------------------------------");
//【反转】实现字符串中内容的反转
//sb1.reverse();
//System.out.println("sb1 = " + sb1); //dlrowdcba4321dcba
System.out.println("-------------------------------");
//实现StringBuilder类型向String类型的转换
//String s3 = new String(sb1);
String s3 = sb1.toString();
System.out.println("s3 = " + s3); //abcd1234abcdworld
//实现String类型向StringBuilder类型的转换
StringBuilder sb4 = new StringBuilder(s3);
System.out.println("sb4 = " + sb4); //abcd1234abcdworld
}
}
public static void main(String[] args) {
//StringBuilder(String str) - 根据字符串来构造对象。
StringBuilder sb1 = new StringBuilder("hello");
System.out.println("sb1 = " + sb1); //调用toString() hello
//- 初始容量为:16 + 字符串参数的长度。
//- 该类没有重写equals()和hashCode()方法,但重写了toString()方法。
//int capacity() - 用于获取当前对象的容量并返回。
System.out.println("容量是: " + sb1.capacity()); //21 = 16 + 5
//int length() - 用于返回当前对象的字符个数。
System.out.println("字符个数是: " + sb1.length()); // 5
System.out.println("------------------------");
//【插入】实现向字符串对象sb1中插入指定的字符串内容
//StringBuilder sb2 = sb1.insert(-1,"abcd); 编译正常,运行异常
//StringBuilder类描述的字符序列本身可以改变
//StringBuilder insert(int offset, String str)
//- 用于将str插入到当前字符串中offset的位置并返回。
StringBuilder sb2 = sb1.insert(0, "abcd");
System.out.println("sb2 = " + sb2); //abcdhello
System.out.println("sb1 = " + sb1); //abcdhello
//String类描述的字符串本身不会改变
String s1 = "hello";
String s2 = s1.toUpperCase();
System.out.println("s2 = " + s2); //HELLO
System.out.println("s1 = " + s1); //hello
//既然调用方法后调用对象本身已经改变了,为啥还返回一模一样的结果呢?
//解析:为了连续调用
//sb1.insert(0, "a").insert(1, true).append("hello").append("too");
//sb1.insert(0, "12");
//sb1.append('c');
sb1.insert(4, "1234");
System.out.println("sb1 = " + sb1); //abcd1234hello
sb1.insert(13, "ABCD");
System.out.println("sb1 = " + sb1); //abcd1234helloABCD
System.out.println("---------------------------");
//StringBuilder append(String str)
//- 用于将str追加到当前字符串的末尾位置。
//向字符串末尾追加内容
StringBuilder sb3 = sb1.append("world");
System.out.println("sb1 = " + sb1); //abcd1234helloABCDworld
System.out.println("sb3 = " + sb3); //abcd1234helloABCDworld
//当插入的字符串超过初始容量时,怎会自动扩大容量
System.out.println("容量是:" + sb1.capacity()); //44
System.out.println("字符个数是: " + sb1.length()); //22
System.out.println("-----------------------------");
//【删】实现字符串中内容的删除,"hello"移除
sb1.delete(8, 13);
System.out.println("sb1 = " + sb1); //abcd1234ABCDworld
System.out.println("------------------------------");
//【改】现在字符串中内容的修改,"ABCD"替换为"abcd"
sb1.replace(8, 12, "abcd");
System.out.println("sb1 = " + sb1); //abcd1234abcdworld
System.out.println("-------------------------------");
//【反转】实现字符串中内容的反转
//sb1.reverse();
//System.out.println("sb1 = " + sb1); //dlrowdcba4321dcba
System.out.println("-------------------------------");
//实现StringBuilder类型向String类型的转换
//String s3 = new String(sb1);
String s3 = sb1.toString();
System.out.println("s3 = " + s3); //abcd1234abcdworld
//实现String类型向StringBuilder类型的转换
StringBuilder sb4 = new StringBuilder(s3);
System.out.println("sb4 = " + sb4); //abcd1234abcdworld
}
}