首页 > 编程知识 正文

string是什么类型,stringbuilder原理

时间:2023-05-06 10:42:26 阅读:47064 作者:1427

本文论述了String、StringBuffer和StringBuilder的区别和联系

文章目录概述String和StringBufferStringBuilder本文总结

概要

处理字符串的常用类有三种: String、StringBuffer和StringBuilder。

三方的区别

都是final类,不允许继承; String类的长度不变,可以更改StringBuffer和StringBuilder类的长度。 StringBuffer类是线程安全的,StringBuilder不是线程安全的。String和StringBuffer String和StringBuffer类型之间的主要性能差异: String是不变的对象因此,如果经常更改字符串的长度,请不要使用字符串对象,因为每次生成对象都会影响系统性能,特别是内存中引用的对象越多,JVM的GC就会开始工作,性能会下降;

使用StringBuffer类时,通常建议使用StringBuffer,因为它每次都会处理StringBuffer对象本身,而不是生成新对象并更改对象引用。 特别是字符串对象频繁变更时

在某些情况下,String对象的字符串拼接实际上是通过Java Compiler编译为StringBuffer对象的拼接,因此在这些情况下,String对象的速度是StringBuffer 示例:

string S1=" thisisonlya " " simple " " test " string buffer sb=new string builder (" thisisonlya " ).append ) " " simple "。 String s1对象的生成速度并不比StringBuffer慢。 实际上,Java Compiler会自动转换为:

Java Compiler直接编译上述第一个语句,String s2=“This is only a”; string S3=“简单”string S4=“测试”String s1=s2 s3 s4; 此时,Java Compiler有规则地按原样执行,利用String的concatenation (即,操作是利用StringBuilder (或StringBuffer )的append方法执行的,但对于s3,如果使用StringBuffer (或StringBuilder ),则不需要创建其他StringBuffer。

StringBuilder StringBuilder是5.0中的新增功能。 此类提供与StringBuffer兼容的API,但不保证同步。 此类被设计为StringBuffer的简单替换,在字符串缓冲区用于单个线程时使用(这很常见)。 如果可能,建议您优先采用此类,因为大多数实现都比StringBuffer快。 两者的方法基本相同。

使用策略

1、基本原则:操作少量数据时,字符串; 单线程处理大量数据,使用StringBuilder; 多线程处理大量数据,使用StringBuffer。

2、不使用String系列的“”频繁连接。 由于这种性能极差,应该使用StringBuffer或StringBuilder系统。 这是Java优化中比较重要的原则。 例如:

字符串结果=' '; for(strings:hugearray ) { result=result s; //stringbuilderstringbuildersb=new stringbuilder (); for(strings:hugearray ) sb.append ) s; }String result=sb.toString (; 在这种情况下,显然采用第二种方法。 第一种方法为每个循环创建一个String result以保存结果,但其他方法基本相同

3、StringBuilder一般用于在方法内部完成类似功能”功能,由于线程不安全,用完可以丢弃。 字符串缓冲器主要用于全局变量

4、在同样的情况下使用StirngBuilder,虽然比使用StringBuffer只能提高10%~15%左右的性能,但是在多线程中会冒不安全的风险。 在现实的模块化编程中,负责某个模块的程序员不能明确判断该模块是否在多线程环境中运行。 因此,除非确认系统瓶颈是StringBuffer且不以多线程模式运行,否则无法采用StringBuilder。 否则就用StringBuffer

本文详细介绍了String、StringBuffer和StringBuilder的区别和联系。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。