您的位置 首页 java

java StringBuilder和StringBuffer类的使用

/**

* StringBuilder StringBuffer

* StringBuilder可变字符序列 不做线程同步检查 效率高 常用

* StringBuffer可变字符序列 做线程同步检查 效率低

* StringBuilder和StringBuffer的方法用法相同

*/

public class TestString2 {

public static void main(String[] args) {

StringBuilder s1 = new StringBuilder(“asd”);

//写成StringBuilder s1 = “asd”会报错 “asd”是String类 StringBuilder和StringBuffer都不可以用””字符串直接赋值

//new StringBuilder(String str) 输入的asd是String类

StringBuffer s2 = new StringBuffer();

//无参 返回空字符串”” new对象的value为长度16的char[]数组

s2.append(s1);

System.out.println(s2+”的结果为asd”);

//在原始 字符串 的结尾append附加实参字符串 返回this本身 不会额外new新的字符串返回

s2.append(s1).append(“a”).append(s1);

System.out.println(s2+”的结果为asdasdaasd”);

//因为.append()会返回this 所以 s2.append(s1)返回变长的s2后面再接.append(“a”)返回变长的s2再接.append(s1)依然返回this对象本身

// 后面还可以.方法名()调用StringBuffer的所有方法

s2.delete(1,3).delete(0,1);

System.out.println(s2+”的结果为asdaasd”);

//.delete(start,end)删除index从start至end-1位置的字符 同样返回this后面可以继续.方法名()

s2.deleteCharAt(1).deleteCharAt(0);

System.out.println(s2+”的结果为daasd”);

//.deleteCharAt(index)删除索引位的字符 返回this

s2.insert(0,s1).insert(1,1);

System.out.println(s2+”的结果为a1sddaasd”);

//.insert()在index位插入字符 index位原来的字符及后面的字符往后移位 返回this

System.out.println(s2.reverse()+”的结果为dsaadds1a”);

//.reverse()将字符串反转 返回this

String str1 = “”;

long memory1Start = Runtime.getRuntime().freeMemory();

//获得JVM虚拟机可用的系统剩余内存空间 Runtime.getRuntime()返回new Runtime对象 .freeMemory()可用内存 返回值类型为long

long time1Start = System.currentTimeMillis();

//current当前的 millisecond毫秒 获得当前时间 单位毫秒 值为当前时间减去1970-01-01 0:00 返回值类型为long

for (int i =0;i<5000;i++){

str1 = str1+i;

//拼接i new一个新的字符串赋值给str1 循环5000次即new5000个字符串对象

}

long memory1End = Runtime.getRuntime().freeMemory();

long time1End = System.currentTimeMillis();

System.out.println(memory1Start-memory1End+”占用内存38606648″);

System.out.println(time1End-time1Start+”用时79″);

StringBuilder str2 = new StringBuilder();

//使用StringBuilder拼接字符串

long memory2Start = Runtime.getRuntime().freeMemory();

long time2Start = System.currentTimeMillis();

for (int i = 0; i<5000;i++){

str2.append(i);

//将int加入字符串末尾 返回this 不产生新的字符串对象

}

long memory2End = Runtime.getRuntime().freeMemory();

long time2End = System.currentTimeMillis();

System.out.println(memory2Start – memory2End+”占用内存0″);

System.out.println(time2End-time2Start+”用时0″);

//大量拼接字符串操作使用StringBuilder

}

}

文章来源:智云一二三科技

文章标题:java StringBuilder和StringBuffer类的使用

文章地址:https://www.zhihuclub.com/189898.shtml

关于作者: 智云科技

热门文章

网站地图