使用StringBuffer的时候,经常对他的delete方法的参数的起止位置搞混,最近看了一下Api,
public StringBuffer replace(int start,
int end,
String str)
使
用给定 String 中的字符替换此序列的子字符串中的字符。该子字符串从指定的 start 处开始,一直到索引 end - 1
处的字符,如果不存在这种字符,则一直到序列尾部。先将子字符串中的字符移除,然后将指定的 String 插入
start。(如果需要,序列将延长以适应指定的字符串。)
参数:
start - 起始索引(包含)。
end - 结束索引(不包含)。
str - 将替换原有内容的字符串。
原来end 的结束索引并不包含他,类似的像substring()方法也不包含结束索引,这可能是java的一个特点吧
另外还注意到了StringBuffer 跟StringBuilder,这两个类具有兼容的 API(估计就是说提供的API是一样的),这两个类的区别就是,线程同步不同步的问题
StringBuffer是线程同步的,所以速度较慢,StringBuilder是线程不同步的,所以速度较快,当没有同步问题时,建议使用StringBuilder
分享到:
相关推荐
这意味着StringBuilder的所有方法都没有进行同步处理,这使得StringBuilder在单线程环境中比StringBuffer更快,因为无需考虑线程安全。在大多数应用中,由于线程安全不是普遍需求,StringBuilder通常被视为首选。 ...
- 基于字符数组:`StringBuffer`和`StringBuilder`内部维护了一个字符数组来存储字符串,可以通过`length()`方法获取当前字符串的长度。 2. `StringBuffer`: - 线程安全性:如上所述,`StringBuffer`的主要特点...
- **append()**: 这个方法用于在字符串末尾添加内容,如`sb.append("text")`,返回的是修改后的StringBuffer或StringBuilder对象,方便链式操作。 - **deleteCharAt()**: 删除指定索引位置的字符,如`sb....
相对地,StringBuilder是非线程安全的,它的方法没有进行同步处理,因此在单线程环境下,StringBuilder通常比StringBuffer有更高的性能。 二、创建对象 创建StringBuffer对象的代码如下: ```java StringBuffer sb ...
"Java 中 String、StringBuffer 和 StringBuilder 的区别及用法" Java 中 String、StringBuffer 和 StringBuilder 是三个常用的字符串操作类,了解它们之间的区别对 Java 开发者来说非常重要。本文将详细介绍这三者...
通常,我们使用 `new StringBuilder()` 或 `new StringBuffer()` 初始化对象,然后通过调用 `append()` 方法将其他字符串或变量连接起来。例如,给出的示例代码展示了如何使用 `StringBuilder` 来构建一个字符串: ...
除了`append()`方法,`StringBuilder`和`StringBuffer`还提供了`insert()`, `delete()`, `replace()`等方法来修改字符串。这些方法的实现都基于`AbstractStringBuilder`,在进行相应操作时,都会先检查并调整容量,...
StringBuffer 的删除功能包括 deleteCharAt 方法和 delete 方法。deleteCharAt 方法可以删除指定位置的字符,而 delete 方法可以删除从指定位置开始到结束位置的内容。 StringBuffer 的替换和反转功能包括 replace ...
2. **追加内容**:使用 `append()` 方法可以将指定的内容添加到 `StringBuffer` 的末尾。 ```java sb.append("要追加的字符串"); ``` 3. **插入内容**:使用 `insert()` 方法可以在指定位置插入内容。 ```java ...
StringBuilder类是StringBuffer类的兄弟类,它们的方法基本相同,但有一个重要的区别:StringBuilder类的方法不是线程安全的(不能同步访问)。因此,在应用程序要求线程安全的情况下,必须使用StringBuffer类,而在...
本文将深入探讨`StringBuffer`的用法,包括其常用方法,并通过实例对比`StringBuffer`与`String`的区别。 首先,我们来了解`StringBuffer`的核心特性。`String`类在进行字符串拼接时会创建新的对象,而`...
`StringBuffer`和`StringBuilder`同样有这些方法,只是它们还额外提供了在字符串末尾添加字符(`append()`)、在任意位置插入字符(`insert()`)、删除特定范围的字符(`delete()`)等操作。 在实际编程中,我们...
3. **方法**:尽管`StringBuilder`和`StringBuffer`在功能上大体相似,但`StringBuffer`的方法因为线程安全而进行了额外的同步处理。它们都提供了`append()`方法来拼接字符串,以及其他类似的方法如`insert()`, `...
- 它的主要方法包括`append()`、`insert()`、`delete()`、`replace()`等,用于添加、插入、删除或替换字符串内容。 - 通常在单线程环境中,`StringBuilder`比`StringBuffer`更快,因为它省去了线程同步的开销。 2...
这意味着`StringBuilder`的方法不是同步的,因此在单线程环境中通常比`StringBuffer`更快,但在多线程环境中则可能会引发并发问题。 #### 选择建议 - **性能考量**:如果程序只在一个线程中运行,推荐使用`...
除了这些基本操作,StringBuilder还提供了一些其他有用的方法,如`reverse()`用于反转字符串内容,`toString()`用于将StringBuilder对象转换为不可变的String对象。在多线程环境下,如果多个线程同时修改同一个...
相反,`StringBuffer`(或`StringBuilder`)是可变的,它提供了一系列的方法(如`append`、`insert`、`delete`等)来改变其内容,而不会创建新的对象。`StringBuffer`在多线程环境中是线程安全的,而`StringBuilder...
- `delete()` 和 `deleteCharAt()`:这两个方法用于删除StringBuffer中的部分字符。`delete(start, end)`删除从`start`到`end-1`的字符,`deleteCharAt(index)`删除索引`index`处的字符。 - `replace()`:替换...
本篇文章将深入解析`StringBuilder`的使用方法、内部机制以及与`StringBuffer`的区别。 `StringBuilder`是Java中的一个类,它位于`java.lang`包下,主要负责动态构建和修改字符串。与`String`不同,`String`对象是...