/**
* 1、java.lang.StringBuffer 代表可变的字符序列,可以对字符串内容进行增删
* 2、很多方法与String相同,StringBuffer是可变长度的
* 3、StringBuffer是一个容器
*/
1、介绍
public class MyStringBuffer {
public static void main(String[] args) {
// 1. 直接父类是 AbstractStringBuilder
// 2. 实现了Serializable,即可串行化
// 3. 在父类中,有属性 char[] value, 该数组存放字符串内容,不是final类型,存放在堆中;
// 4. StringBuffer是final类,不能被继承
// 5. StringBuffe字符串内容是存在 char[] value,所有的变化(增加/删除)[达到一定限制后扩容]
// 不用每次都更新地址(即不是每次都创建新对象),所以效率高于String
StringBuffer stringBuffer = new StringBuffer();
/* StringBuffer的构造器 */
// 1.创建一个大小为 16 的char[] 用于存放字符内容
StringBuffer stringBuffer02 = new StringBuffer();
// 2.通过构造器指定 char[] 大小
StringBuffer stringBuffer03 = new StringBuffer(1000);
// 3.通过 给一个String 创建StringBuffer:char[]大小是--str.length+16
StringBuffer stringBuffer04 = new StringBuffer("hello");
/* StringBuffer 和 String 的相互转换 */
/* String --> StringBuffer */
String str = new String("hello tom");
// 方式1. 使用构造器,返回一个StringBuffer对象,对原str无影响
StringBuffer stringBuffer1 = new StringBuffer(str);
// 方式2. 使用 append 方法
StringBuffer stringBuffer2 = new StringBuffer(); // 先构建一个空对象
stringBuffer2 = stringBuffer2.append(str);
/* StringBuffer --> String */
// 方式1. 使用StringBuffer的 toString 方法
StringBuffer test = new StringBuffer("Test");
String s = test.toString();
// 方式2. 使用String的构造器
String s1 = new String(test);
}
}
2、常用方法
/**
* String常用方法
*/
public class CommMethod {
public static void main(String[] args) {
// 1. equals & equalsIgnoreCase 毕竟字符串,是否区分大小写
// 2. length 字符串长度
// 3. indexOf & lastIndexOf 返回索引对应的字符/字符串在本字符串中的索引
// 4. subString 截取字符串指定范围的字符
//String.subString(5); // 截取索引5以后所有的字符
//String.subString(1,5); // 截取字串索引范围[1, 5)
// 5. toUpperCase & toLowerCase
// 6. concat 拼接字符串
String hello = new String("hello, world");
System.out.println(hello.concat(",").concat("world"));
// 7. str.replace("src","dest") 在str中,用dest替换所有src
// replace返回替换后的字符串,不影响原字符串
System.out.println(hello.replace('l','P'));
System.out.println(hello.replace("he","we"));
// 8. split(",") 用指定的字符串分割原字符串,返回分割后的字符串数组 String[]
System.out.println(hello.split(","));
// 分割时若有特殊字符 需要转义
String path = "E:\\aa\\bb";
String[] split_path = path.split("\\\\"); // 使用\\进行分割原字符串
System.out.println(split_path[0]+" "+split_path[1]);
// 9. toCharArray 将原字符串转换成 字符数组,返回字符数组 char[]
char[] chars = hello.toCharArray();
System.out.println(chars[0]);
// 10. compareTo 用于比较两个字符串的大小
// 前者大,返回正数:后者大,返回负数;相等,返回0
System.out.println(hello.compareTo("hemlo")); // 实际上返回 l-m 的值
System.out.println("Hell".compareTo("Hello")); // 实际上返回 length(Hell)-length(Hello)=-1
System.out.println("Hellom".compareTo("Hello")); // 实际上返回 length(Hellom)-length(Hello)=1
// 11. format 格式化字符串
/* 占位符有:%s 字符串;%c 字符;%d 整型;%.2f 浮点型 */
// %.2f 替换后保留小数点后两位,且会四舍五入
String name = "test";
int age=10;
double score = 99.56789;
char gender = '女';
String formatStr = "姓名是%s, 年龄%d, 性别是%c, 成绩是%.2f";
System.out.println(String.format(formatStr,name,age,gender,score));
}
}