Java学习的第十八天(JavaSE特别篇--StringBulider类)

StringBuilder(高效字符串/缓冲字符串)--比普通字符串用起来更爽

字符串类与之前所学的String字符类有什么区别

1.普通的String长度不能随意更改
2.高效字符串的长度是可变的

构造方法

/*StringBuilder() 
          构造一个不带任何字符的字符串生成器,其初始容量为 16 个字符。*/
StringBuilder sb=new StringBuilder();  //没有任何内容---容器(用来存储字符串)
/*StringBuilder(String str) 
          构造一个字符串生成器,并初始化为指定的字符串内容。*/
StringBuilder sb=new StringBuilder("helloworld");     

+=拼接字符串耗费内存原因:

每次拼接都会产生新的字符串对象,而利用StringBuilder来拼接字符串自始至终用的都是同一个StringBuilder容器
StringBuilder类的成员方法

获取方法

/*int length()    返回长度(字符数)。 */
	
/*int capacity()  返回当前容量。 */

package com.bianyiit.cast;

public class Demo_StringBuilder {
    public static void main(String[] args) {
        String s="helloworld";
        StringBuilder sb = new StringBuilder(s);
        System.out.println("内容的长度:"+sb.length());
        System.out.println("容器的长度:"+sb.capacity());
        //当内容的长度超过了容器的长度,容器会自动扩充,现在的容器长度=之前的容器长度*2+2(容器扩充规律)
        String s1="helloworldhelloworld";
        StringBuilder sb1 = new StringBuilder(s1);
        System.out.println("内容的长度:"+sb1.length());
        System.out.println("容器的长度:"+sb1.capacity());
    }
}
//输出结果:
	内容的长度:10
	容器的长度:26
	内容的长度:20
	容器的长度:36
//当内容的长度超过了容器的长度,容器会自动扩充,现在的容器长度=之前的容器长度*2+2(容器扩充规律)

添加方法append()----链式编程

//append()   ---往容器中添加内容,可以是任意类型,它的返回值仍然是一个StringBuilder对象
StringBuilder sb = new StringBuilder();
       sb.append(1);
       sb.append('妖');
       sb.append("哈哈");
       sb.append(true);
       System.out.println(sb);
//链式编程技术
sb.append(1).append('妖').append("哈哈").append(true);
System.out.println(sb);
//问题:StringBuilder对象使用链式编程的添加数据的时候会产生几个对象??
	永远都是它本身(只有一个)

反转方法reverse

 String s="helloworld";
        StringBuilder sb = new StringBuilder(s);
        System.out.println(sb.reverse());

删除方法

/* StringBuilder delete(int start, int end) 
          移除此序列的子字符串中的字符。 
   StringBuilder deleteCharAt(int index) 
          移除此序列指定位置上的 char。*/
//包含start,不包含end 也就是[start,end)

StringBuilder sb = new StringBuilder();
        sb.append(1);
        sb.append('妖');
        sb.append("哈哈");
        sb.append(true);
        System.out.println(sb);
        System.out.println(sb.delete(0,2));
        System.out.println(sb.deleteCharAt(4));
//输出结果:
	1妖哈哈true
	哈哈true
	哈哈tre

拓展:

StringBuilder是一个长度可以改变的字符串,除了它还有StringBuffer
一般我们在开发中都会选择使用StringBuilder
两者有一个区别
	StringBuilder是单线程的,线程不安全
	StringBuffer 是多线程的,线程安全
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值