String对象是不可改变的。每次使用System.String类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。在需要对字符串执行重复修改的情况下,与创建新的String对象相关的系统开销可能会非常昂贵。如果要修改字符串而不创建新的对象,则可以使用System.Text.StringBuilder类。例如,当在一个循环中将许多字符串连接在一起时,使用StringBuilder类可以提升性能。

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

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

(一)设置容量和长度

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

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

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

MyStringBuilder.Capacity= 25;

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

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

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

MyStringBuilder.Append(" What a beautiful day.");

Console.WriteLine(MyStringBuilder);

此示例将Hello World! What abeautiful day.显示到控制台。

(2)AppendFormat方法将文本添加到StringBuilder的结尾处,而且实现了IFormattable接口,因此可接受格式化部分中描述的标准格式字符串。可以使用此方法来自定义变量的格式并将这些值追加到StringBuilder的后面。以下示例使用AppendFormat方法将一个设置为货币值格式的整数值放置到StringBuilder的结尾。

int MyInt= 25;

StringBuilder MyStringBuilder = new StringBuilder("Your total is ");

MyStringBuilder.AppendFormat("{0:C} ", MyInt);

Console.WriteLine(MyStringBuilder);

此示例将Your total is $25.00显示到控制台。

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

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

MyStringBuilder.Insert(6,"Beautiful ");

Console.WriteLine(MyStringBuilder);

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

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

StringBuilderMyStringBuilder = new StringBuilder("helloooo");

MyStringBuilder.delete(5,7);

Console.WriteLine(MyStringBuilder);

此示例将 helloo显示到控制台。

(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代码

public class AppendStringTest

{

public static void main(String[] args)

{

String text = "" ;

long beginTime = System.currentTimeMillis();

for ( int i= 0 ;i< 10000 ;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< 10000 ;i++)

sb.append(String.valueOf(i));

endTime = System.currentTimeMillis();

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

}

}

public class AppendStringTest

{

public static void main(String[] args)

{

String text = "";

long beginTime = System.currentTimeMillis();

for(int i=0;i<10000;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<1;i++)

sb.append(""台湾"");

endTime = System.currentTimeMillis();

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

}

}

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

执行时间:3188

执行时间:15

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

到此这篇关于java中stringBuilder的用法详解的文章就介绍到这了,更多相关java stringBuilder 内容请搜索云海天教程以前的文章或继续浏览下面的相关文章希望大家以后多多支持云海天教程!

原文链接:https://www.cnblogs.com/onetheway2018/p/11553168.html

java stringbuilder 构造函数_java中stringBuilder的用法详解相关推荐

  1. java中throws用法_java中throws实例用法详解

    在程序出现异常时,会有一个抛出异常的throw出现,这里我们要跟今天所讲的throws区分开.throws的作用是声明抛出,在名称上也跟throw有所不同.下面我们就throws对策概念.语法.实例带 ...

  2. java configuration类_JAVA中的Configuration类详解

    本文主要研究的是java中的configuration类的用法,涉及maven自动加载,pom.xml配置和简单的java代码,具体如下. properties文件是java平台默认的配置文件格式,其 ...

  3. java中instanceof 详解_java中的instanceof用法详解

    instanceof是Java的一个二元操作符(运算符),也是Java的保留关键字.它的作用是判断其左边对象是否为其右边类的实例,返回的是boolean类型的数据.用它来判断某个对象是否是某个Clas ...

  4. java 匿名内部类 参数_Java匿名内部类原理与用法详解

    本文实例讲述了Java匿名内部类原理与用法.分享给大家供大家参考,具体如下: 一 点睛 匿名内部类适合创建那种只需要一次使用的类,定义匿名内部类的语法格式如下: new 父类构造器(实参列表) | 实 ...

  5. java 动态数组_Java动态数组的用法详解

    Java动态数组是一种可以任意伸缩数组长度的对象,在Java中比较常用的是ArrayList,ArrayList是javaAPI中自带的java.util.ArrayList.下面介绍一下ArrayL ...

  6. java io系统_java中的io系统详解

    Java 流在处理上分为字符流和字节流.字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符.字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字节数组. Java 内用 U ...

  7. java获取文件大小_Java中获取文件大小的详解及实例代码

    Java 获取文件大小 今天写代码时需要实现获取文件大小的功能,目前有两种实现方法,一种是使用File的length()方法:另外一种是使用FileInputStream的available()方法, ...

  8. java transient 关键字_java中的transient关键字详解

    前言 说实话学了一段时间java的朋友对于transient这个关键字依旧很陌生基本没怎么用过,但是transient关键字在java中却起到了不可或缺的地位!如果要说讲到,我觉得最可能出现的地方是I ...

  9. java wrapper作用_java Wrapper类基本用法详解

    在封装中有一种特殊的类,能够把基本的数据类型进行转换来方便实际的使用.我们在之前提到的一些数据类型,最明显的特征是所有字母为小写状态,那么经过wrapper的包装后,首字母就变成了大写.下面我们就这种 ...

  10. java arrays.aslist()_Java中Arrays.asList()方法详解及实例

    Arrays.asList() 是将数组作为列表. 问题来源于: public class Test { public static void main(String[] args) { int[] ...

最新文章

  1. linux禁止向指定ip发送数据包,Linux下使用iptables封锁端口禁止邮件发送
  2. [bbk3100]第7集 - Chapter 04 - 介绍RAC中CVU工具的使用
  3. Linux 设备驱动开发 —— platform 设备驱动
  4. Encapsulate Collection(封装集合)
  5. 物理学家张首晟:如果世界末日来临,我会带这几句话上诺亚方舟|研习社演讲实录...
  6. 神秘的.user.ini文件
  7. 上传单.多个文件的函数封装
  8. 面向对象编程(七):接口(抽象类)
  9. 访问量中 pv uv ip的区别
  10. Android-Universal-Image-Loader的工具类封装
  11. 数据科学研究的现状与趋势全解
  12. oracle 19c ora-01017,Oracle 19c RMAN 连接PDB ORA-01017 错误解决方法
  13. CARBON X1 安装 chrome os
  14. 密立根油滴实验实验数据处理
  15. 2007年简历版本。
  16. 【Redis缓存中间件必须要掌握的面试知识】
  17. 代码随想录训练营day7
  18. redis的安装步骤
  19. python大学试题及答案_python+-中国大学mooc-试题题目及答案
  20. 表达式解析器(MVEL)

热门文章

  1. 国内智能手机市场寒风凛冽,华米OV谁更受伤?
  2. Retrofit 使用 DELETE 方式
  3. 免费视频直播、点播H5播放器SkeyeWebPlayer适配移动端
  4. Gradle's dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)
  5. 基于Java+Swing实现记事本-完美版
  6. 联想笔记本电脑重装系统按F几
  7. 在Centos7上安装vpnc客户端
  8. easyui datagrid deleteRow删除行时异常,删除了其他行
  9. An improved genetic algorithm for the flexible job shop scheduling problem with multiple time constr
  10. 硬盘大于2t linux安装 集群 网络,centos 6在大于2T硬盘上安装系统