首页 > 编程知识 正文

java构造函数的八种方法(在类中添加构造函数java)

时间:2023-05-04 07:37:32 阅读:65999 作者:2857

不能修改字符串对象。 每次使用System.String类中的一个方法时,都会在内存中创建新的字符串对象。 因此,必须为新对象分配新的区域。 如果需要反复修改字符串,则与创建新字符串对象相关的开销可能非常高。 如果要修改字符串而不创建新对象,可以使用System.Text.StringBuilder类。 例如,使用StringBuilder类可以在一个循环中连接多个字符串时提高性能。

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

stringbuildermystringbuilder=new stringbuilder (' hello world!' );

(一)安装容量和长度

StringBuilder对象是动态对象,可以增加封装字符串中的字符数,但也可以为最大字符数指定值。 此值称为对象的容量,不要与存储在当前StringBuilder对象中的字符串的长度混淆。 例如,可以创建一个包含StringBuilder类字符串" Hello " (长度为5 )的新实例,并将对象的最大容量指定为25。 更改StringBuilder后,在达到容量之前,不会为自己重新分配空间。 达到容量后,将自动分配新空间,容量将翻倍。 可以使用其中一个重载构造函数指定StringBuilder类的容量。 下面的代码示例指定MyStringBuilder对象最多可以扩展到25个空白。

stringbuildermystringbuilder=new stringbuilder (' hello world!' 、25;

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

MyStringBuilder.Capacity=25;

(二)此类一般方法如下:

)1) Append方法可用于将文本或对象的字符串表示添加到由当前StringBuilder对象表示的字符串末尾。 下面的示例将StringBuilder对象初始化为Hello World,并将文本添加到对象的末尾: 根据需要自动分配空间。

stringbuildermystringbuilder=new stringbuilder (' hello world!' );

my stringbuilder.append (' whatabeautifulday.';

console.writeline (my stringbuilder );

在本例中,Hello World! What abeautiful day .显示在控制台上。

) AppendFormat方法将文本添加到StringBuilder的末尾并实现IFormattable接口。 因此,可以接受格式部分中描述的标准格式字符串。 可以使用此方法自定义变量的格式,并将这些值添加到StringBuilder之后。 此示例使用AppendFormat方法将设置为货币值格式的整数值放置在StringBuilder的末尾:

int MyInt=25;

stringbuildermystringbuilder=new stringbuilder (' yourtotalis );

my stringbuilder.append format (' { 0: c } ',MyInt );

console.writeline (my stringbuilder );

在此示例中,Your total is $25.00显示在控制台上。

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

stringbuildermystringbuilder=new stringbuilder (' hello world!' );

mystringbuilder.insert(6,' Beautiful ';

console.writeline (my stringbuilder );

在本例中,Hello BeautifulWorld! 显示在控制台上。

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

stringbuildermystringbuilder=new stringbuilder (' hello world!' );

my stringbuilder.remove (5,7 );

console.writeline (my stringbuilder );

在此示例中,Hello显示在控制台上。

)5)使用

 Replace方法,可以用另一个指定的字符来替换 StringBuilder对象内的字符。以下示例使用 Replace方法来搜索 StringBuilder对象,查找所有的感叹号字符 (!),并用问号字符 (?)来替换它们。

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

MyStringBuilder.Replace('!', '?');

Console.WriteLine(MyStringBuilder);

此示例将 Hello World?显示到控制台

getSqlMapClientTemplate().queryForList((new StringBuilder()).append(entityClass.getName()).append(".select").toString(), null);

Java的StringBuilder类

如果程序对附加字符串的需求很频繁,不建议使用+来进行字符串的串联。可以考虑使用java.lang.StringBuilder 类,使用这个类所产生的对象默认会有16个字符的长度,您也可以自行指定初始长度。如果附加的字符超出可容纳的长度,则StringBuilder 对象会自动增加长度以容纳被附加的字符。如果有频繁作字符串附加的需求,使用StringBuilder 类能使效率大大提高。如下代码:

Java代码

1 public classAppendStringTest2 {3 public static voidmain(String[] args)4 {5 String text = "";6

7 long beginTime =System.currentTimeMillis();8 for ( int i= 0 ;i< 10000 ;i++)9 text = text +i;10 long endTime =System.currentTimeMillis();11 System.out.println("执行时间:" +(endTime-beginTime));12

13 StringBuilder sb = new StringBuilder ( "");14 beginTime =System.currentTimeMillis();15 for ( int i= 0 ;i< 10000 ;i++)16 sb.append(String.valueOf(i));17 endTime =System.currentTimeMillis();18 System.out.println("执行时间:" +(endTime-beginTime));19

20 }21 }22 public classAppendStringTest23 {24 public static voidmain(String[] args)25 {26 String text = "";27

28 long beginTime =System.currentTimeMillis();29 for(int i=0;i<10000;i++)30 text = text +i;31 long endTime =System.currentTimeMillis();32 System.out.println("执行时间:"+(endTime-beginTime));33 StringBuilder sb = new StringBuilder ("");34 beginTime =System.currentTimeMillis();35 for(int i=0;i<10000;i++)36 sb.append(String.valueOf(i));37 endTime =System.currentTimeMillis();38 System.out.println("执行时间:"+(endTime-beginTime));39 }40 }

此段代码输出:

执行时间:3188

执行时间:15

StringBuilder 是j2se1.5.0才新增的类,在此之前的版本若有相同的需求,则使用java.util.StringBuffer。事实上StringBuilder 被设计为与StringBuffer具有相同的操作接口。在单机非线程(MultiThread)的情况下使用StringBuilder 会有较好的效率,因为StringBuilder 没有处理同步的问题。StringBuffer则会处理同步问题,如果StringBuilder 会有多线程下被操作,则要改用StringBuffer,让对象自行管理同步问题。

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