Fork me on GitHub

StringBuffer&&String

字符串一般使用String进行表示,一旦声明,字符串常量就不可能改变。而字符串对象可以改变,但是只是改变其内存地址的指向。
如果想要频繁修改字符串,可以使用StringBuffer类,StringBuffer类通过append()方法,进行数据的连接。

结构定义

String

public final class String extends Object implements Serializable,Comparable,CharSequence

StringBuffer

public final class String extends Object implementss Serializable,CharSequence

  • [] 可以发现String和StringBuffer类都是 CharSequence接口的子类,因此都可以向上转型为 CharSequence接口

String类转化为StringBuffer类

  • 利用StringBuffer类的构造方法
1
2
3
4
5
6
7
8
package Test;
public class testDemo2 {
public static void main(String args[]) {
StringBuffer buf=new StringBuffer("Hello world");
System.out.println(buf);
}

}
  • 利用StringBuffer类的append()方法
1
2
3
4
5
6
7
8
9
package Test;
public class testDemo2 {
public static void main(String args[]) {
StringBuffer buf=new StringBuffer();
buf.append("hello world");
System.out.println(buf);
}

}

StringBuffer类转化为String类

  • 利用toString()方法可以将StringBuffer类转换为String
1
2
3
4
5
6
7
8
9
package Test;
public class testDemo2 {
public static void main(String args[]) {
StringBuffer buf=new StringBuffer("hello world");
String str=buf.toString();
System.out.println(str);
}

}
  • 利用String构造方法
1
2
3
4
5
6
7
8
9
package Test;
public class testDemo2 {
public static void main(String args[]) {
StringBuffer buf=new StringBuffer("hello world");
String str=new String(buf);
System.out.println(str);
}

}

String和StringBuffer的比较

String类提供了一个方法用于比较String和StringBuffer的字符串的内容

1
public boolean contentEquals(StringBuffer buf)

注意:此方法比较会区分大小写

StringBuffe常用方法

  • public StringBuffer append() 追加数据
  • public StringBuffer reverse() 字符串翻转
  • public StringBuffer insert(int offset,数据类型 变量) 指定位置追加内容
  • public StringBuffer delete(int star,int end) 指定删除索引范围的内容

StringBuilder类

  • 结构如下
    1
    public final StringBuilder extends Object implements Serializable,CharSequence

结构定义和StringBuffer完全相同,但是StringBuffer类的定义全部使用synchronized进行同步定义,属于安全的线程操作,而StringBuilder类的方法都是异步方法,属于非线程安全操作

-------------本文结束感谢您的阅读-------------
Donate comment here