,,java中stringBuilder的用法详解

,,java中stringBuilder的用法详解

本文主要介绍了stringBuilder在java中的用法,并且通过示例代码非常详细,对于大家的学习或者工作都有一定的参考价值。有需要的朋友下面和边肖一起学习。

对象字符串是不可变的。每次你使用系统中的一个方法。String类,你必须在内存中创建一个新的string对象,所以你需要为这个新对象分配新的空间。在重复修改字符串的情况下,与创建新的字符串对象相关联的开销可能非常昂贵。如果要修改字符串而不创建新对象,可以使用系统。StringBuilder类。例如,当许多字符串在一个循环中连接在一起时,使用StringBuilder类可以提高性能。

通过用重载的构造函数方法初始化变量,可以创建StringBuilder类的新实例,如下例所示。

StringBuilder MyStringBuilder=new StringBuilder(' Hello World!');

(一)设置容量和长度

虽然StringBuilder对象是一个动态对象,但它允许扩展它封装的字符串中的字符数,但是您可以指定它可以容纳的最大字符数的值。这个值称为这个对象的容量,不应该与当前StringBuilder对象保存的字符串长度相混淆。例如,可以用字符串“Hello”(长度为5)创建StringBuilder类的新实例,并指定该对象的最大容量为25。当修改StringBuilder时,它不会为自己重新分配空间,直到达到它的容量。当达到容量时,将自动分配新空间,容量将翻倍。您可以使用一个重载的构造函数来指定StringBuilder类的容量。下面的代码示例指定MyStringBuilder对象最多可以扩展到25个空格。

StringBuilderMyStringBuilder=new StringBuilder(' Hello World!', 25);

此外,您可以使用读/写容量属性来设置对象的最大长度。下面的代码示例使用Capacity属性定义对象的最大长度。

MyStringBuilder。容量=25;

(二)下面列出了此类的几个常用方法:

(1)Append方法可用于将字符串表示的文本或对象添加到当前StringBuilder对象所表示的字符串的末尾。下面的示例将StringBuilder对象初始化为“Hello World ”,然后将一些文本追加到该对象的末尾。空间将根据需要自动分配。

StringBuilderMyStringBuilder=new StringBuilder(' Hello World!');

MyStringBuilder。追加('多么美好的一天。');

控制台。WriteLine(mystring builder);

这个例子改变了Hello World!多么美好的一天。显示到控制台。

(2)AppendFormat方法将文本添加到StringBuilder的末尾,并实现IFormattable接口,因此它可以接受formatting部分描述的标准格式字符串。您可以使用这个方法自定义变量的格式,并将这些值附加到StringBuilder的后面。下面的示例使用AppendFormat方法将格式化为货币值的整数值放在StringBuilder的末尾。

int MyInt=25

StringBuilder mystring builder=new StringBuilder('你的总数是');

MyStringBuilder。append format(“{ 0:C }”,MyInt);

控制台。WriteLine(mystring builder);

此示例向控制台显示您的总额为$25.00。

(3)3)Insert方法将一个字符串或对象添加到当前StringBuilder中的指定位置。下面的示例使用此方法将一个单词插入到StringBuilder的第六个位置。

StringBuilderMyStringBuilder=new StringBuilder(' Hello World!');

MyStringBuilder。插入(6,'漂亮');

控制台。WriteLine(mystring builder);

此示例更改Hello BeautifulWorld!显示到控制台。

(4)可以使用delete方法从当前StringBuilder中删除指定数量的字符。移除过程从指定的从零开始的索引开始。下面的示例使用Remove方法来缩短StringBuilder。

StringBuilderMyStringBuilder=new StringBuilder(' helloooo ');

MyStringBuilder.delete(5,7);

控制台。WriteLine(mystring builder);

此示例向控制台显示helloo。

(5)使用Replace方法,可以用另一个指定的字符替换StringBuilder对象中的字符。以下示例使用Replace方法来搜索

StringBuilder对象查找所有感叹号字符(!),并使用问号字符(?)来代替它们。

StringBuilderMyStringBuilder=new StringBuilder(' Hello World!');

MyStringBuilder。替换('!', '?');

控制台。WriteLine(mystring builder);

这个例子改变了Hello World?显示到控制台

getSqlMapClientTemplate()。queryForList((new StringBuilder())。append(entityClass.getName())。追加('。选择’)。toString(),null);

Java的StringBuilder类

如果程序经常需要额外的字符串,不建议连接字符串。考虑使用java.lang.StringBuilder类。默认情况下,该类生成的对象的长度为16个字符,或者您可以自己指定初始长度。如果附加的字符超过了可以容纳的长度,StringBuilder对象将自动增加长度以容纳附加的字符。如果需要频繁附加字符串,使用StringBuilder类可以大大提高效率。代码如下:Java代码

公共类AppendStringTest

{

公共静态void main(String[] args)

{

string text=“”;

long begin time=system . current time millis();

for(int I=0;我10000;我)

text=text I;

long end time=system . current time millis();

System.out.println('执行时间:'(end time-begin time));

StringBuilder sb=new StringBuilder(');

begin time=system . current time millis();

for(int I=0;我10000;我)

sb . append(string . value of(I));

end time=system . current time millis();

System.out.println('执行时间:'(end time-begin time));

}

}

公共类AppendStringTest

{

公共静态void main(String[] args)

{

string text=“”;

long begin time=system . current time millis();

for(int I=0;i10000我)

text=text I;

long end time=system . current time millis();

System.out.println('执行时间:'(end time-begin time));

StringBuilder SB=New StringBuilder(' China ');

begin time=system . current time millis();

for(int I=0;i1;我)

Sb.append('台湾省');

end time=system . current time millis();

System.out.println('执行时间:'(end time-begin time));

}

}

此代码的输出:中国“台湾省”

执行时间:3188

执行时间:15

StringBuilder是j2se1.5.0中新增的一个类,如果之前的版本有相同的要求,那么使用java.util.StringBuffer。实际上,StringBuilder的设计与StringBuffer具有相同的操作接口。单机不是多线程的情况下使用StringBuilder会更有效率,因为StringBuilder不处理同步问题。StringBuffer将处理同步问题。如果StringBuilder将在多线程下运行,将改为使用StringBuffer,对象将自行管理同步问题。

关于java stringBuilder的详细用法的这篇文章就到这里了。有关java stringBuilder的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望你以后能支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: