详述StringBuffer类

什么是StringBuffer类?

StringBuffer类和String类相似,都可以存放字符串吗,但不同的是,StringBuffer字符串代表的是可变的字符序列,即可以对对象多次进行修改,并且不产生新的未使用对象;而String字符串是不可更改的常量。

附:创建StringBuffer类对象的语法格式

StringBuffer 变量名 = new StringBuffer(默认参数);

为什么使用StringBuffer类?

当需要对字符串进行修改,并且不产生新的对象(节省内存)时,需要使用StringBuffer类。

下面举实例以说明:

实例1:连接字符串

public class Test {

    public static void main(String[] args) {
	String name = "Tom";
	name = name + "cat";
	System.out.println(name);
    }
}

(使用String类实现字符串的连接)

在上面代码段中,我们首先应该知道,String字符串是常量不可更改,在运行到第四行代码时JVM在堆中创建了对象“Tom”,而运行到第五行时JVM创建新的对象:在“Tom”的基础上加上“cat”而生成的“Tomcat”对象。在这段代码的运行过程中共计生成了两个对象。

而若使用StringBuffer则可以不用创建新的对象,直接对原对象进行修改,即在原对象“Tom”的基础上在其后面加上“cat”。‘

public class Test {

    public static void main(String[] args) {
	StringBuffer name = new StringBuffer("Tom");
	name.append("cat");
	System.out.println(name);
	}
}

(使用StringBuffer类中的append()方法实现字符串修改)

 

实例2:多次修改字符串

public class Test {

    public static void main(String[] args) {
	String name = "Tom";
	for (int i = 0; i < 20; i++) {
	name = name + "cat";
	}
	System.out.println(name);
    }
}

如果对String类字符串多次连接新的字符串,上面已经提到,这种方法会产生很多空闲对象可能导致Java执行效率变低,甚至发生内存溢出。

而若对StringBuffer类字符串多次添加新的字符串片段,则不必创建新的对象,直接对原对象进行修改操作,可以得到同样的结果并且内存消耗更少。

public class Test {

    public static void main(String[] args) {
	StringBuffer name = new StringBuffer("Tom");
	for (int i = 0; i < 20; i++) {
		name.append("cat");
	}
	System.out.println(name);
    }
}

StringBuffer类常用方法

1.append()方法

作用:append(各种类型参数)用于将参数的数据加入到内存中对象缓冲区的末尾。

举例:(举例参考“实例1”中第二段代码)

2.reverse()方法

作用:reverse()方法用于将StringBuffer类字符串的所有字符倒置。

举例:

public class Test {

    public static void main(String[] args) {
	StringBuffer name = new StringBuffer("Tom");
	name.reverse();
	System.out.println(name);
    }
}

运行结果为:

moT

附:String类中“+”的含义

例如下面一行代码:

String name = "T"+"om";

符号“+”在上面代码中代表“字符串连接符”的意思。

值得注意的是,在上述代码运行过程中,JVM仅仅创建了一个对象,即“Tom”,原因是因为,在代码编译过程中,JVM识别到“+”符号,将两段字符串连接成一个字符串,因此在运行过程中,JVM只给其创建一个对象。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值