首页 > 其他分享 >StringBuilder

StringBuilder

时间:2022-10-17 09:46:59浏览次数:53  
标签:String bu2 StringBuilder System println out

StringBuilder的原理

字符串是常量;它们的值在创建之后不能更改 字符串的底层是一个被final修饰的数组 不能改变 是一个常量

进行字符串的相加 内存中就会有多个字符串 占用空间多 效率低下

如:

 

 而StringBuilder是字符串缓冲区 可以提供字符串的操作效率(看成一个长度可以变化的字符串)

底层也是一个数组 但是没有被final修饰 可以改变长度

 StringBuilder在内存中始终是一个数组 占用空间少 效率高 如果超出了StringBuilder的容量 会自动扩容

StringBuilder的使用

构造方法

1.public StringBuilder();构造一个空的StringBuilder容器

2.public StringBuilder(String str);构造一个StringBuilder容器 并将字符串添加进去

代码:

public static void main(String[] args) {
//构造一个空的StringBuilder容器 也是无参构造方法
StringBuilder bu1 = new StringBuilder();
System.out.println("bu1"+bu1);
//构造一个StringBuilder容器 并将字符串添加进去 也是有参构造方法
StringBuilder bu2 = new StringBuilder("abc");
System.out.println("bu2"+bu2);
}

 成员方法

1.public StringBuilder append(...);添加任意类型数据的字符串形式 并返回当前对象自身

代码:

public static void main(String[] args) {
StringBuilder bu1 = new StringBuilder();
//添加任意类型数据的字符串形式 并返回当前对象自身
StringBuilder z = bu1.append("张三");//添加String类型的数据
System.out.println(bu1);
System.out.println(z);
System.out.println(z==bu1);//true 说明两个地址值是一样的
System.out.println("-----------------------------");
//使用append无须接收返回值了 因为它最后返回的是它本身
StringBuilder bu2 = new StringBuilder();
bu2.append("abc");
bu2.append(true);
bu2.append(0.0);
bu2.append(10);
bu2.append('玺');
System.out.println(bu2);
}

运行结果:

2.public String toString();将当前StringBuilder对象转换为String对象

代码:

public static void main(String[] args) {
//将当前StringBuilder对象转换为String对象
StringBuilder sb = new StringBuilder("abcdef");
String s = sb.toString();
System.out.println(s);
System.out.println(s==sb);
}
s==sb:

说明两个不是一个地址值String是一个StringBuilder是另一个两个没有办法进行判断只会出现编译错误

标签:String,bu2,StringBuilder,System,println,out
From: https://www.cnblogs.com/shenziyi/p/16798010.html

相关文章

  • 【算法】时间频度与时间复杂度、归并排序、StringBuffer和StringBuilder详解!
    算法中的时间频度与时间复杂度时间频度一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度......
  • String、StringBuffer 、StringBuilder、StringJoiner
    一、String、StringBuffer、StringBuilder1、定义用来连接多个字符的,本质就是一个char型的数组,是一种引用类型,并且不能被继承因为是final修饰的Stringstr="abc";相当......
  • 八(一)、常用类之String、StringBuffer、StringBuilder
     一、String类:字符串,使用一对“”引起来;1.String声明为final不可被继承;2.实现了Seriablizable:表示字符串是支持序列化的;Compareble:可比较大小CharSequence接口:提供对多......
  • StringBuilder的用法
    当我们要对字符串做多次变化时,我们可以考虑用StringBuilderStringBuildersb=newStringBuilder();sb.Append("111");//追加字符串sb.AppendLine("222");//追加一行字......
  • C# String和StringBuilder的区别及性能详解
    String在C#中其实是不可变的,每次操作字符串变量增加或减少时,都会重新分配内存。试想一下,如果创建一个循环10000次的字符串加减操作,每次循环都将一个字符连接到字符串,这样内......
  • String、StringBuffer和StringBuilder区别
    String、StringBuffer和StringBuilder区别1、StringBuffer和StringBuilder非常的类似,均表示字符可变序列,方法也一样。2、String表示不可变的字符序列,效率低,复用性高。3......
  • 4、StringBuilder类
    StringBuilder类一个可变的字符序列,此类提供一个与StringBuffer兼容的API,但不保证同步(StringBuilder不是线程安全)。该类被设计用作StringBuffer的一个简易替换,用......
  • 06 | JAVA的StringBuilder高效拼接字符串
    StringBuilder如果用+来拼接字符串速度满。我们可以提前用StringBuilder来申请一大块的内存。把他想象成一个容器。为了能高效拼接字符串,Java标准库提供了StringBuil......
  • Java常用类之StringBuffer、StringBuilder类
    由于String的特性:内容一旦声明则不可改变,如果要改变,改变的肯定是String的引用地址。那么如果一个字符串要经常改变,此时使用String就不太合适,从而使用StringBuffer或StringB......
  • ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) .append("Id",getId())防止内
    publicStringtoString(){returnnewToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE).append("Id",getId()).append("AdClientId",getAdClientId()).appe......