【Java学习笔记】StringBuffer可变字符串的使用
程序员文章站
2024-03-22 09:45:34
...
该文章是观看https://www.bilibili.com/video/BV1ct411n7oG?p=117后的学习笔记。
下面先来看实例代码,再对立面用到的函数进行说明:
public class TestStringBuffer {
public static void main(String[] args) {
StringBuffer stringBuffer = new StringBuffer();
for(int i=0;i<26;i++){
stringBuffer.append((char)('a'+i));
}
System.out.println(stringBuffer);
stringBuffer.reverse();
//设置下标为2的位置的值为X
stringBuffer.setCharAt(2,'X');
System.out.println("设置下标2为X:"+stringBuffer);
//在下标为3、4的位置的稠入值4、5;链式调用方法
stringBuffer.insert(3,'4').insert(4,'5');
System.out.println("在下标3插入4:"+stringBuffer);
//删除下标位置为1到26的数据
stringBuffer.delete(1,26);
System.out.println("删除下标1到26的数据:"+stringBuffer);
String s="";
double st,et,mst,met;
mst=Runtime.getRuntime().freeMemory();
st = System.currentTimeMillis();
for(int i=0;i<20000;i++){
s+=i;
}
et = System.currentTimeMillis();
met=Runtime.getRuntime().freeMemory();
System.out.println("20000次操作String耗时:"+(et-st)+"毫秒");
System.out.println("20000次操作String占用内存:"+(met-mst));
StringBuffer s2=new StringBuffer("");
mst=Runtime.getRuntime().freeMemory();
st = System.currentTimeMillis();
for(int i=0;i<20000;i++){
s2.append(i);
}
et = System.currentTimeMillis();
met=Runtime.getRuntime().freeMemory();
System.out.println("20000次操作StringBuffer耗时:"+(et-st)+"毫秒");
System.out.println("20000次操作String占用内存:"+(met-mst));
}
}
程序运行结果:
1.比较StringBuffer与String大量拼接字符串所消耗的时间与空间:
String s="";
double st,et,mst,met;
mst=Runtime.getRuntime().freeMemory();
st = System.currentTimeMillis();
for(int i=0;i<20000;i++){
s+=i;
}
et = System.currentTimeMillis();
met=Runtime.getRuntime().freeMemory();
System.out.println("20000次操作String耗时:"+(et-st)+"毫秒");
System.out.println("20000次操作String占用内存:"+(met-mst));
StringBuffer s2=new StringBuffer("");
mst=Runtime.getRuntime().freeMemory();
st = System.currentTimeMillis();
for(int i=0;i<20000;i++){
s2.append(i);
}
et = System.currentTimeMillis();
met=Runtime.getRuntime().freeMemory();
System.out.println("20000次操作StringBuffer耗时:"+(et-st)+"毫秒");
System.out.println("20000次操作String占用内存:"+(met-mst));
}
程序运行的结果:
从程序运行的结果中可以看出,使用StringBuffer对字符串进行拼接操作比String节省了大量的时间与空间。因为,String的每次操作都会新建一个新对象,从而导致在操作完成后会多出很多无用的对象,导致内存泄漏。因此,在编写服务器程序时,如果需要进行大量的字符串拼接操作,一定要使用StringBuffer,避免内存泄漏导致程序崩溃。
2.append进行字符串拼接:
StringBuffer stringBuffer = new StringBuffer();
for(int i=0;i<26;i++){
stringBuffer.append((char)('a'+i));
}
3.setChat设置指定位置字符的值:
//设置下标为2的位置的值为X
stringBuffer.setCharAt(2,'X');
4.insert在指定下标位置插入字符:
//在下标为3、4的位置的稠入值4、5;链式调用方法
stringBuffer.insert(3,'4').insert(4,'5');
5.delete删除指定下标之间的数据:
//删除下标位置为1到26的数据
stringBuffer.delete(1,26);
注:上面的函数方法都可以链式调用。
上一篇: matlab m_map学习总结系列8
下一篇: Java SE 学习笔记11 字符串
推荐阅读
-
【Java学习笔记】StringBuffer可变字符串的使用
-
详解Java中字符串缓冲区StringBuffer类的使用
-
详解Java中字符串缓冲区StringBuffer类的使用
-
深入学习Java编程中的字符串的进阶使用
-
Java基础学习笔记13——(StringBuffer的使用,数组高级,Arrays工具类,Integer和Character等包装类)
-
JAVA学习笔记——Javadoc的基本使用
-
Java学习笔记39. StringBuffer 类的声明与创建
-
java学习笔记(中级篇)—细说mybatis的使用方式
-
Neo4j学习笔记(1)——使用Java API实现简单的增删改查
-
JAVASE 小白学习笔记 (12-3)Java中的常用类--StringBuffer类、StringBuilder类