package com.java.java6.CommonClass;
/**
* @Author youHui
**/
public class Str {
public static void main(String[] args) {
//test1();
test2();
}
public static void test1(){
//StringBuffer StringBuilder的创建
/**
* 父类都是AbstractStringBuilder
*/
//synchronized:线程同步
StringBuffer sb = new StringBuffer();//线程安全,做线程的同步检查,效率低
StringBuilder sb1 = new StringBuilder();//线程不安全,不做线程同步检查,效率高
//末尾加内容
sb.append("a");
sb.append("b");
sb.append("c").append("d").append("e");
System.out.println(sb);
sb1.append("云南昆明");
//插入内容
sb1.insert(0,"安宁").insert(1,"市");
System.out.println(sb1);
sb1.delete(0,2);//[0,2)
sb1.deleteCharAt(0);//指定删除某个位置的元素
System.out.println(sb1.reverse());//逆序
}
public static void test2(){
//StringBuffer StringBuilder相关效率测试
String str = "";
long num1 = Runtime.getRuntime().freeMemory();//获取JVM剩余空间,单位是字节
long time1 = System.currentTimeMillis();//获取当前时刻,单位毫秒
for(int i=0;i<=5000;i++){
str+=i;//相当于会创建5000个字符串对象
}
long num2=Runtime.getRuntime().freeMemory();
long time2=System.currentTimeMillis();
System.out.println("String占用内存:"+(num1-num2));
System.out.println("String占用的时间为:"+(time2-time1)+"毫秒");
//System.out.println(str);//效率低
System.out.println("使用可变字符序列,完成拼接===========");
StringBuilder sbi = new StringBuilder();
long num11 = Runtime.getRuntime().freeMemory();//获取JVM剩余空间,单位是字节
long time11 = System.currentTimeMillis();//获取当前时刻,单位毫秒
for(int i=0;i<=5000;i++){
sbi.append(i);
}
long num22=Runtime.getRuntime().freeMemory();
long time22=System.currentTimeMillis();
System.out.println("StringBuilder占用内存:"+(num11-num22));
System.out.println("StringBuilder占用的时间为:"+(time22-time11)+"毫秒");
}
}
You辉编程_String、StringBuffer、StringBuilder测试
最新推荐文章于 2024-09-14 21:52:54 发布