Java学习笔记39. StringBuffer 类的声明与创建

本文对比了String与StringBuffer的特点,解释了String不可变性的原理及其带来的内存问题,介绍了StringBuffer如何通过直接操作堆内存中的字符串来提高频繁操作时的效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

String对象一旦建立,就不能在堆内存中更改。重新赋值只能改变变量名的指向,比如:

String str = "abc"; //堆内存中开辟空间,存入abc
str = “def”; //另开辟空间存入def,并改变str的指向,原先内存中的abc并没有消失

当指向字符串的变量更改指向之后,原先的字符串在内存中就成了“垃圾”,就会有垃圾回收机制,定期地回收内存。

但是,如果需要对字符串变量频繁的操作,就会产生大量的内存空间垃圾。为了避免这种情况,在需要对字符串进行频繁操作的时候,就可以使用StringBuffer对象。StringBuffer对象可以直接操作堆内存中的字符串,从而避免产生大量的内存垃圾。

StringBuffer类的声明:

StringBuffer objectName; 

StringBuffer对象的创建:

1. 无参构造方法:无参构造方法创建一个可容纳16个字符的StringBuffer对象

StringBuffer sb = new StringBuffer();

2. 整型参数构造方法:创建一个可容纳参数长度字符的StringBuffer对象

StringBuffer sb = new StringBuffer(101); //创建一个可容纳101个字符的字符串

3. 以String对象作为参数的构造方法:可容纳长度为参数字符串长度,再加16 个字符

StringBuffer sb = new StringBuffer("abcde");
当未来实际所需要的字符长度大于最初定义的时候,系统自动为其扩容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值