String 的基本方法 String和StringBuffer的使用比较

String的基本方法

package SHUZU.String;
/*
        可变字符序列的常用方法
 */
public class method {
    public static void main(String[] args){
        StringBuilder sb = new StringBuilder();
        for(int i = 0;i<26;i++){
            sb.append((char)('a'+i));
        }
        System.out.println(sb);
        sb.reverse();  //逆置
        System.out.println(sb);

        sb.setCharAt(3,'王'); //修改
        System.out.println(sb);

        sb.insert(4,'一').insert(5,'博');
        //链式调用。 核心就是: 该方法调用了return this  把自己返回了

        sb.delete(20,23);
        System.out.println(sb);


    }
}

String和StringBuffer的比较(时间和空间方面)

package SHUZU.String;
/*
       测试可变字符序列和不可变序列使用的陷阱
 */
public class trap {
    public static void main(String[] args){

        /*使用String进行字符串的拼接*/
         String str1 = new String();
         long num1 = Runtime.getRuntime().freeMemory();//获取系统剩余内存空间
         long time1 = System.currentTimeMillis();
         for(int i = 0;i < 5000; i++){
             str1 = str1 + i;  //相当于产生了10000个对象   太耗时耗空间了
                              // 因为str1是一个字符串,i也要转成一个字符串进行字符串拼接,再生成一个新的字符串
         }
         long num2 = Runtime.getRuntime().freeMemory();
         long time2 = System.currentTimeMillis();
         System.out.println("String 占用内存: " +(num1 - num2));
         System.out.println("String 占用时间: "+(time2-time2));

         //使用StringBuffer拼接,省时,每次添加在原字符串后面,没有产生新对象
        long num3 = Runtime.getRuntime().freeMemory();//获取系统剩余内存空间
        long time3 = System.currentTimeMillis();
        StringBuffer str2 = new StringBuffer();
         for(int i = 0;i<5000;i++){
             str2.append(i);
         }
        long num4 = Runtime.getRuntime().freeMemory();
        long time4 = System.currentTimeMillis();
        System.out.println("StringBuffer 占用内存: " +(num3 - num4));
        System.out.println("StringBuffer 占用时间: "+(time4-time3));


    }
}

运行效果
String 的基本方法 String和StringBuffer的使用比较_第1张图片

你可能感兴趣的:(String 的基本方法 String和StringBuffer的使用比较)