java常用类之字符串相关类 String,StringBuilder,StringBuffer

本文介绍了Java中不可变字符串(String)与可变序列(StringBuilder与StringBuffer)的使用,重点讲解了它们的效率差异,通过实例展示了在大量修改时StringBuilder的高效性能。
摘要由CSDN通过智能技术生成

目录

一:字符串相关类

 二:常用的方法列表

 三:不可变序列和可变序列使用陷阱——大量修改时的效率测试


一:字符串相关类

String类是不可变字符序列,每次赋值的时候都要重新创建对象

StringBuilder是可变字符序列,每次赋值返回的都是当前对象,它是最常用的,它的效率高,但是线程不安全

StringBuffer也是可变字符序列 ,它不太常用,它线程安全,但是效率低

看下面代码

package com.changYongLei;

public class TestString {
    public static void main(String[] args) {
        String str="aaaa";
        StringBuffer s2=new StringBuffer("aaa");//可变字符序列,效率低,线程安全
        StringBuilder s1=new StringBuilder("abcdef");//可变字符序列,效率高,线程不安全
        s1.append(123);//仍返回自身对象,不像String那样返回一个新的对象
        s1.append(456);
        System.out.println(s1);

    }
}

 

 二:常用的方法列表

大部分都在用append()这个方法,执行完这个方法后,仍返回自身对象,return this

 

 

 三:不可变序列和可变序列使用陷阱——大量修改时的效率测试

这里充分体现了StringBuilder效率高的特点和可变字符序列的优点

package com.changYongLei;

public class TestTest {
    public static void main(String[] args) {
        /*使用String进行字符串拼接*/
        String str="";
        long num1=Runtime.getRuntime().freeMemory();//获取系统剩余内存空间
        long time1=System.currentTimeMillis();//获取系统当前时间
        for(int i=0;i<5000;i++){
            str=str+i;
        }
        long num2=Runtime.getRuntime().freeMemory();
        long time2=System.currentTimeMillis();
        System.out.println("String占用的内存空间:"+(num1-num2));
        System.out.println("String运行占用的时间:"+(time2-time1));
        /*使用StringBulider进行字符串拼接*/
        StringBuilder str2=new StringBuilder("");
        long num3=Runtime.getRuntime().freeMemory();
        long time3=System.currentTimeMillis();
        for(int i=0;i<5000;i++){
            str2.append(i);
        }
        long num4=Runtime.getRuntime().freeMemory();
        long time4=System.currentTimeMillis();
        System.out.println("StringBulider占用的内存空间:"+(num3-num4));
        System.out.println("StringBulider运行占用的时间:"+(time4-time3));


    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值