StringBuffer

一.前言

在String类中,用直接赋值的方式给String类型变量赋值时,就像下面代码这样,会在堆中的常量池里创建一个常量,然后将该常量的地址赋给栈中的变量:

String name="k9999";

当以如下这种方式时,叫做字符串的拼接,在常量池中还是只创建了一个对象:

String name="k9999"+"om";

但是初始化后假如以如下这种凡是再次赋值时,在常量池中就会创建两个对象,一个是初始化时的k99,一个是赋值过后创建的k9999:

String name="k99";
name=name+"99";

也就是说如果将上面的字符串拼接方式循环50次,在常量池中就会创建50个对象,这对堆中的内存空间是一种极大的损耗:

for(int i=0;i<50;i++) {
    String name="k99";
    name=name+"99";
}

那么如何解决这个问题呢?

二.StringBuffer的使用

StringBuffer就是一个用来解决字符串拼接赋值时占用内存空间问题的类,它和String类的作用基本相同,只是它在进行字符串拼接赋值时在堆中不会保留之前的值,所以无论拼接赋值多少次,堆中始终只有一个对象。

以下是使用StringBuffer创建对象的代码:

public class Test {

	public static void main(String[] args) {
		StringBuffer name=new StringBuffer("k9999");
	}
}

这里要注意的是StringBuffer类只能通过new调用构造方法来给对象赋值,用直接赋值的方式就会报错。

三.StringBuffer中的方法

1.append(String str)

append(String str)方法在StringBuffer类中就是用来实现字符串拼接的,像刚才String类中的那个for循环代码,在StringBuffer类中就如下实现:

public class Test {

	public static void main(String[] args) {
		StringBuffer name=new StringBuffer("k99");
		for(int i=0;i<50;i++){
			name.append("99");
		}
	}
}

2.reverse()

reverse()的作用是将一个字符串倒置,调用代码如下:

public class Test {

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值