API基础第二天

一、StringBuilder类

1.	由于String是不变对象,每次改变内容都要创建信的对象,非常的消耗内存
	因为String不适用于做频繁的修改操作,为了解决这个问题,java提供了StringBuilder的类

currentTimeMillis()

这个时间是格林威治的时间1970年1月1日0时开始计算的毫秒数

字符串连接性能测试:

String str = "";
long t1 = System.out.currentTimemails()
for(int i=0;i<5000;i++){
   
	str = str+"A";
}
long t2 = System.currentTimeMillis();
//第二次输出时间减去第一次时间
System.out.println(t2-t1);

long t1 = System.out.currentTimemails()
用时间毫秒数来测试

 public static void main(String[] args) {
   
        /*
        current:当前的
        TimeMills:时间毫秒数
        1970年元旦开始到现在的毫秒数
         */
        long now = System.currentTimeMillis();
        System.out.println(now);
    }
2.	StringBuilder()构造一个不带任何字符的字符串生成器,其初始容量为16个字符.
	StringBuilder称之为可变字符串
3.	StringBuilder是专门用于修改String的一个API,内部维护的是一个可变的char数组,修改都是在这个数组上进行的,内部会自动扩容,修改速度和性能开销优秀
4.	StringBuilder在lang包中,final修饰,维护的是char数组,该数组是没有final修饰,是可以直接修改其内部数组的内容
5.	当数组容量不足时候,会自动扩容,运算期间会减少创建数组的数量
6.	String只适合查,可读性好.
7.	Builder是适合修改字符串的,尤其是对字符串进行频繁的操作

StringBuilderAPI

1.	append()方法:追加,在字符串的末尾进行追加
	当容量满(数组满了)会自动扩容,扩容规则:1倍 +2(16——34——70——142)
public static void main(String[] args) {
   
    /*
    创建类名不要创建成StringBuilder
    测试StringBuilder的连接性能
     */
    StringBuilder buf = new StringBuilder();
    long t1 = System.currentTimeMillis();
    for(int i=0;i<5000;i++){
   
        buf.append("A");
    }
    long t2 = System.currentTimeMillis();
    System.out.println(t2-t1);
    }

在这里插入图片描述
字符串出现了大量的内存开销,底层数组频繁的创建和销毁时非常消耗性能的
尽量少扩容性能是更好的

buf-> char[]{
   A, C, B, 0, 0, 0, 0, 0, 0, 0, 0...0}
//           0  1  2  3  4  5
StringBuilder buf = new StringBuilder();
buf.append("A") 
   .append("A") 
   .append("A")
   .append("B") 
   .insert(1,"C")	//整体往后移动一位
   .delete(2,4);	//包括开始,不包括结束
Stirng str = buf.toString();
2.	replace():替换部分内容,含头不含尾
	方法中有三个参数:start,end,替换的字符串
	int builder = "好好学习,天天向上!";
	builder.replace(5,12,"为了改变世界");
	System.out.println(builder);
3.	delete():删除部分内容
	方法中含有两个参数:start,end含头不含尾
	int builder = "好好学习,为了改变世界!";
	builder.delete(0,5);
	System.out.println(builder);
4.	insert():插入操作
	两个参数:插入的位置,插入的字符串内容
	builder.insert(0,"活着");
	System.out.println(builder);
5.	reverse():翻转字符串
	没有参数
	builder.reverse();
	System.out.println(builder)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值