如下程序:
public class ThisHappens {
public static void main(String[]
args) {
StringBuffer[] stringBuffers = new
StringBuffer[10];
for (int i = 0; i < stringBuffers.length; i
++) {
stringBuffers[i] = new StringBuffer();
stringBuffers[i].append("StringBuffer at index " + i);
}
}
}
既然已经new StringBuffer[10]了,为什么还要加这句stringBuffers[i] = new
StringBuffer();
解答:
StringBuffer[] stringBuffers = new StringBuffer[10];
---这一句,是new了一个StringBuffer数组,这个数组有10个StringBuffer作为元素。
stringBuffers[i]
= new StringBuffer();
---而这一句,则是将第i个的StringBuffer实例化。
未曾经过实例化(new)而直接使用的对象将会有一个warning,并且在运行时会抛出一个exception。
因此必须先进行一次实例化操作(new),之后才会使用。
相关推荐
与`String`类不同,`StringBuffer`是可变的(mutable),这意味着它的内容可以在创建后进行修改,而无需创建新的对象。这种特性使得在处理大量字符串操作时,`StringBuffer`比`String`更高效,因为它避免了不必要的...
而 `StringBuffer` 允许在对象创建后对其进行修改,如添加、删除或替换字符等操作。 2. **线程安全**:`StringBuffer` 在实现上采用了同步机制(synchronized),确保了多线程环境下的安全性。这使得在多个线程同时...
这是通过创建一个`StringBuffer`对象`sb`,然后遍历二维数组,将每个子数组转换为JSON对象格式,最后组合成一个JSON数组。以下是代码详解: 1. 首先定义了一个二维字符串数组`blogList`,包含了多条博客信息。 2. ...
4. **`StringBuffer(CharSequence chars)`** - 使用给定的`CharSequence`对象作为初始值创建`StringBuffer`。 这些构造方法为开发者提供了灵活的选择,可以根据具体的应用场景选择合适的初始化方式。 #### 方法...
如果需要创建带有内容的 StringBuffer 对象,则可以使用:StringBuffer s = new StringBuffer("abc");这样初始化出的 StringBuffer 对象的内容就是字符串"abc"。 需要注意的是,StringBuffer 和 String 属于不同的...
它在内存中的表现形式是字符数组,所以每次对`String`对象进行修改(如拼接)都会创建一个新的`String`对象,这可能导致大量的内存开销。例如: ```java String str1 = "Hello"; String str2 = "World"; String str...
每次对 String 对象的修改实际上都是重新创建一个新的对象,然后把新的值保存进去。String 是 final 类,意味着它不能被继承。 StringBuffer 则是一个可变对象,当对它进行修改的时候不会像 String 那样重新建立...
一旦一个 String 对象被创建后,其内容就不能被改变。这使得 String 类非常适合用来表示常量或者不变的数据。 **StringBuffer** 是 Java 提供的一个线程安全的可变字符序列类。它类似于 String,但是可以在创建后...
- 对于`StringBuffer`,它的`append`方法内部直接修改了`char[]`数组,无需创建新的对象。 综上所述,`String`和`StringBuffer`(或`StringBuilder`)在使用时应根据具体需求来选择。对于不关心线程安全且字符串...
数组的定义、创建和使用是编程的基础,特别是在处理批量数据时。本章主要探讨了数组,特别是字符串以及类库的使用。 一、数组 1. 一维数组 - 定义与创建: - 方式一:先声明数组变量,再创建数组对象。如 `int a...
这是因为`String`每次连接操作都会创建新的`String`对象,而`StringBuffer`则是在原有的对象基础上进行修改。在大量字符串操作的情况下,这种差异尤为明显。 4. **编译器优化**: 尽管如此,Java编译器有时会对...
Java中字符数组、String类、StringBuffer三者之间相互转换 Java语言中,字符数组、String类、StringBuffer三者之间的相互转换是一个非常重要的知识点。在实际开发中,我们经常需要在这三者之间进行转换,以满足不同...
2. **性能**:对于频繁修改的字符串,使用`StringBuffer`会比不断创建新`String`对象更加高效。 3. **线程安全性**:`StringBuffer`的所有方法都是同步的,因此它是线程安全的,而`String`类本身没有提供线程安全...
相比之下,`StringBuilder`和`StringBuffer`是可变的字符序列,它们允许在原有对象基础上进行修改,而不创建新对象。`StringBuilder`是Java 5.0新增的类,它是非线程安全的,这意味着在单线程环境下,StringBuilder...
使用`+=`时,每次操作都会创建新的字符串对象,而`StringBuffer`则是在原对象上进行修改,从而避免了不必要的对象创建。 ### 总结 - 在单线程环境中,简单字符串操作使用`String`即可。 - 对于需要频繁修改的字符串...
相较于`String`类,`StringBuffer`提供了线程安全的动态字符串构建,避免了频繁创建新对象带来的性能开销。本文将深入探讨`StringBuffer`的用法,包括其常用方法,并通过实例对比`StringBuffer`与`String`的区别。 ...
但是,在某些特别情况下,String 对象的字符串拼接其实是被 JVM 解释成了 StringBuffer 对象的拼接,所以这些时候 String 对象的速度并不会比 StringBuffer 对象慢。 线程安全性 StringBuffer 是线程安全的,而 ...
由于不涉及新的对象创建,`StringBuffer`在处理大量字符串拼接时效率远高于`String`。 在上述代码示例中,我们比较了使用`String`和`StringBuffer`进行5000次字符串拼接操作的时间消耗。当使用`String`时,每次循环...