优秀的手机游戏下载!
首页 java中的StringBuilder有什么用?

java中的StringBuilder有什么用?

发布时间:2024-01-11 00:20:34 编辑:手游哥 浏览:718

String

字符串常量

StringBuffer

字符串变量(

线程安全

StringBuilder

字符串变量(非线程安全)

简要的说,

String

类型和

StringBuffer

类型的主要性能区别其实在于

String

是不可变的对象,

因此在每次对

String

类型进行改变的时候其实都等同于生成了一个新的

String

对象,然后将指针指向新的

String

对象,所以经常改变内容的字符串最好不要用

String

,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后,

JVM

GC

就会开始工作,那速度是一定会相当慢的。

而如果是使用

StringBuffer

类则结果就不一样了,每次结果都会对

StringBuffer

对象本身进行操作,而不是生成新的对象,再改变

对象引用

。所以在一般情况下我们推荐使用

StringBuffer

,特别是字符串对象经常改变的情况下。而在某些特别情况下,

String

对象的字符串拼接其实是被

JVM

解释成了

StringBuffer

对象的拼接,所以这些时候

String

对象的速度并不会比

StringBuffer

对象慢,而特别是以下的字符串对象生成中,

String

效率是远要比

StringBuffer

快的:

String

S1

=

“This

is

only

a”

+

simple”

+

test”

StringBuffer

Sb

=

new

StringBuilder(“This

is

only

a”).append(“

simple”).append(“

test”)

你会很惊讶的发现,生成

String

S1

对象的速度简直太快了,而这个时候

StringBuffer

居然速度上根本一点都不占优势。其实这是

JVM

的一个把戏,在

JVM

眼里,这个

String

S1

=

“This

is

only

a”

+

simple”

+

“test”

其实就是:

String

S1

=

“This

is

only

a

java中的StringBuilder有什么用?

simple

test”

所以当然不需要太多的时间了。但大家这里要注意的是,如果你的字符串是来自另外的

String

对象的话,速度就没那么快了,譬如:

String

S2

=

“This

is

only

a”

String

S3

=

simple”

String

S4

=

test”

String

S1

=

S2

+S3

+

S4

这时候

JVM

会规规矩矩的按照原来的方式去做

在大部分情况下

StringBuffer

&gt

String

StringBuffer

Java.lang.StringBuffer线程安全的可变字符序列。一个类似于

String

的字符串缓冲区,但不能修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。

可将字符串缓冲区安全地用于多个线程。可以在必要时对这些方法进行同步,因此任意特定实例上的所有操作就好像是以串行顺序发生的,该顺序与所涉及的每个线程进行的方法调用顺序一致。

StringBuffer

上的主要操作是

append

insert

方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串缓冲区中。append

方法始终将这些字符添加到缓冲区的末端;而

insert

方法则在指定的点添加字符。

例如,如果

z

引用一个当前内容是“start”的字符串缓冲区对象,则此方法调用

z.append("le")

会使字符串缓冲区包含“startle”,而

z.insert(4,

"le")

将更改字符串缓冲区,使之包含“starlet”。

在大部分情况下

StringBuilder

&gt

StringBuffer

java.lang.StringBuilde

java.lang.StringBuilder一个可变的字符序列是5.0新增的。此类提供一个与

StringBuffer

兼容的

API,但不保证同步。该类被设计用作

StringBuffer

的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比

StringBuffer

要快。两者的方法基本相同。

何时用StringBuffer、StringBuilder:

StringBuilder一般使用在方法内部来完成类似"+"功能,因为是线程不安全的,所以用完以后可以丢弃.StringBuffer要用在全局变量中

Java 中StringBuilder的作用?

常用方法有以下几个:

1.追加内容到当前StringBuilder对象的结尾StringBulider append(参数)

2.将内容插入到StringBulider对象的指定位置StringBulider insert(位置,参数)

3.将StringBulider对象转换为String对象  String toString()

4.获取字符串的长度

int length()

StringBulider str = new StringBulider("hello");str.append("nihao");

str.append(520)

System.out.println("字符串长度"+str.length())

System.out.println("插入前"+str)

str.insert(11,"!");

String str2=str.toString()//转换为String类型

System.out.println("插入后"+str2);

用于高效率的拼接字符串。,用法如下:

public static void main(String[] args)

{

String text = ""

long beginTime = System.currentTimeMillis()

for ( int i= 0 i&lt10000 i++)

text = text + i

long endTime = System.currentTimeMillis()

System.out.println("执行时间:" +(endTime-beginTime))

StringBuilder sb = new StringBuilder ( "" )

beginTime = System.currentTimeMillis()

for ( int i= 0 i&lt10000 i++)

sb.append(String.valueOf(i))

endTime = System.currentTimeMillis()

System.out.println("执行时间:" +(endTime-beginTime))

}

以上就是关于java中的StringBuilder有什么用?全部的内容,如果了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

更多相关资讯

String 字符串常量 StringBuffer 字符串变量( 线程安全 ) StringBuilder 字符串变量(非线程安全) 简要的说, String …
查看详情
String 字符串常量 StringBuffer 字符串变量( 线程安全 ) StringBuilder 字符串变量(非线程安全) 简要的说, String …
查看详情
String 字符串常量 StringBuffer 字符串变量( 线程安全 ) StringBuilder 字符串变量(非线程安全) 简要的说, String …
查看详情
相关资讯
猜你喜欢