StringBuilder
1.不可继承
public final class StringBuilder extends AbstractStringBuilder
implements java.io.Serializable, CharSequence
2.内容可变
/**
* The value is used for character storage.
*/
char value[];
3.构造方法
默认构造一个长度为16的char数组
public StringBuilder(int capacity) {
super(capacity);
}
public StringBuilder() {
super(16);
}
public StringBuilder(String str) {
super(str.length() + 16);
append(str);
}
abstract class AbstractStringBuilder implements Appendable, CharSequence {
/**
* The value is used for character storage.
*/
char value[];
/**
* The count is the number of characters used.
*/
int count;
/**
* This no-arg constructor is necessary for serialization of subclasses.
*/
AbstractStringBuilder() {
}
/**
* Creates an AbstractStringBuilder of the specified capacity.
*/
// 构建一个长度为X的char类型数组
AbstractStringBuilder(int capacity) {
value = new char[capacity];
}
}
4.append()
public StringBuilder append(String str) {
super.append(str);
return this;
}
public AbstractStringBuilder append(String str) {
if (str == null) str = "null";
int len = str.length();
if (len == 0) return this;
int newCount = count + len;
if (newCount > value.length)
expandCapacity(newCount);
str.getChars(0, len, value, count);
count = newCount;
return this;
}
// 数组拷贝,改变str的内容
public void getChars(int srcBegin, int srcEnd, char dst[], int dstBegin) {
if (srcBegin < 0) {
throw new StringIndexOutOfBoundsException(srcBegin);
}
if (srcEnd > count) {
throw new StringIndexOutOfBoundsException(srcEnd);
}
if (srcBegin > srcEnd) {
throw new StringIndexOutOfBoundsException(srcEnd - srcBegin);
}
System.arraycopy(value, offset + srcBegin, dst, dstBegin,
srcEnd - srcBegin);
}
// 添加新的字符串后的长度大于已有的容量,扩容处理,产生新的对象
// 扩容的长度,(leng+1)*2
void expandCapacity(int minimumCapacity) {
int newCapacity = (value.length + 1) * 2;
if (newCapacity < 0) {
newCapacity = Integer.MAX_VALUE;
} else if (minimumCapacity > newCapacity) {
newCapacity = minimumCapacity;
}
value = Arrays.copyOf(value, newCapacity);
}
其他:
1.str = str + str1 ; 或 str+= str1 ;
实质等价于 StringBuilder sb = new StringBuilder(str);sb.append(str1);
但在循环中使用 s+=s1 ;相当于每次都创建一个新的对象;
所以,多次进行字符串拼接操作时改为使用StringBuidler
分享到:
相关推荐
C#中StringBuilder类的使用方法 C#中的StringBuilder类是 System.Text 命名空间下的一个类,用于高效地处理和操作字符串。StringBuilder类的出现是为了解决String类的不可变性问题,每次使用String类中的方法时,都...
在Java编程语言中,String、StringBuilder和StringBuffer都是用来处理字符串的类,它们之间存在一些重要的区别,主要涉及到性能和线程安全性。 首先,`String`类代表的是字符串常量,一旦创建,其内容就不能改变。...
StringBuilder 的用法 StringBuilder 是一个高效的字符串处理类,用于处理需要频繁修改的字符串。在 .NET Framework 中,String 对象是不可改变的,每次使用 System.String 类中的方法之一时,都要在内存中创建一个...
"String StringBuffer和StringBuilder区别之源码解析" 在Java中,字符串是我们经常使用的数据类型,而String、StringBuffer和StringBuilder是Java中三种常用的字符串类。在这篇文章中,我们将从源码角度对String、...
1. **初始化StringBuilder对象**:首先,我们需要创建一个StringBuilder实例,指定初始容量以减少后续的容量调整。 ```csharp StringBuilder htmlBuilder = new StringBuilder(capacity); ``` 2. **添加HTML头部**...
如果要修改字符串而不创建新的对象,则可以使用System.Text.StringBuilder 类。例如,当在一个循环中将许多字符串连接在一起时,使用 StringBuilder类可以提升性能。 通过用一个重载的构造函数方法初始化变量,可以...
在Java编程语言中,`String`、`StringBuffer`和`StringBuilder`是处理字符串的三个重要类,它们各自有特定的使用场景和优缺点。理解它们的差异对于编写高效的代码至关重要。 **String类** `String`是不可变的类,...
在Java编程语言中,`PrintStream`, `StringBuilder` 和 `Formatter` 是三个非常重要的类,分别用于不同的输出处理。理解并熟练使用这三个类是提升Java编程能力的关键。 首先,我们来详细了解一下`PrintStream`。它...
### String和StringBuilder类的区别 在.NET框架中,`String` 和 `StringBuilder` 是两种非常重要的字符串处理类。尽管它们都能用来表示和操作文本数据,但它们之间存在显著的区别,主要体现在内存使用、性能表现...
主要生成StringBuilder 字符串 类似 StringBuilder builder = new StringBuilder(); builder.AppendFormat("<span class=\"navSep\"></span>\r\n"); builder.AppendFormat("机构看盘</a>\r\n"); builder....
String, StringBuffer 与 StringBuilder 的区别 在 Java 中,String, StringBuffer 和 StringBuilder 三个类都是用于字符操作的,但它们之间有着很大的区别。 首先,String 是不可变类,意味着一旦创建了 String ...
在Java编程语言中,StringBuilder是一个可变的字符序列。与String相比,StringBuilder的主要优势在于它在频繁修改字符串时的性能优势。当使用String拼接时,每次拼接都会创建一个新的String对象,而StringBuilder则...
本文将深入探讨字符串、String类以及StringBuilder类,帮助你更好地理解和应用这些基础知识。 首先,我们关注的是String类。在C#中,String类是不可变的,这意味着一旦一个字符串对象被创建,它的内容就不能被改变...
在Java编程语言中,`StringBuilder`是一个非常重要的类,它被广泛用于字符串的构建和拼接操作。在处理大量字符串连接时,相比直接使用`+`运算符或`String`对象,`StringBuilder`能提供更高的性能。这是因为每次使用`...
`StringBuilder` 和 `StringBuffer` 是两个非常重要的类,它们用于构建和操作字符串。本篇将深入探讨如何将SQL语句转换为`StringBuilder`对象,以及`StringBuffer`的相关知识点。 `StringBuilder` 和 `StringBuffer...
StringBuilder类在.NET框架中扮演着重要的角色,特别是在大量字符串操作时提高性能。以下是对这些概念的详细解释: **Ajax(异步JavaScript和XML)** Ajax的核心在于能够在不刷新整个页面的情况下与服务器交换数据...
在编程领域,`StringBuilder`是许多面向对象语言中用于高效构建和操作字符串的类,它允许在内存中多次修改字符串而无需每次都创建新的字符串对象。Java中的`StringBuilder`就是一个典型的例子,但在C++中,由于语言...
在C#编程中,`StringBuilder`类是一个非常重要的工具,特别是在处理大量文本操作时,它提供了比使用字符串连接更高效的方式。本篇文章将深入探讨如何使用`StringBuilder`类来实现"有选中部分给选中部分加空格"以及...