定义了StringBuffer数组,为什么还要创建string buffers

来源:百度知道 编辑:UC知道 时间:2024/05/09 15:37:49
如下程序:
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];
这只是声明了 10个 StringBuffer 的变量 并没有创建对象

stringBuffers[i] = new StringBuffer(); 这是给变量创建对象

换个好明白点的:
String[] a = new String[10];
for (int i = 0; i < a.length; i++) {

System.out.print(a[i]);
}
这样输出的 都是 null
说明 String[] a = new String[10]; 这只是声明
并没真正的创建对象。所以都是null.
String[] a = new String[10];
for (int i = 0; i < a.length; i++) {
a[i] = new String();
System.out.print(a[i]);
}
加上一句后就不会输出null了,什么也没输出
其实输出的都是些空字符,因为没附值 .
说明真正的对象
是在这创建的
所以你那个 stringBuffers[i] = new StringBuffer();
是不能少的 作用是创建对象 。

StringBuffer[] stringBuffers = new StringBuffer[10];
---
这一句,是new了一个StringBuffer数组,这个数组有10个StringBuffer作为元素。

stringBuffers[i] = new StringBuffer();
---
而这一句,则是将第i个的StringBuffer实例化。
未曾经过实例化(new)而直接使用的对象将会有一个warning,并且在运行时会抛出一个exception。
因此必须先进行一次实例化操作(n