是不是StringBuffers数组没有初始化,我在你的代码上加了初始化就没错了:
public class What{
public static void main(String[] args){
StringBuffer[] StringBuffers=new StringBuffer[10];
for(int i=0;i<StringBuffers.length;i++)
StringBuffers[i]=new StringBuffer(); //对每个数组对象初始化;
for(int i=0;i<StringBuffers.length;i++){
StringBuffers[i].append("string buffer at index"+i);
}
}
}
public class What{
public static void main(String[] args){
StringBuffer[] StringBuffers=new StringBuffer[10];
for(int i=0;i<StringBuffers.length;i++)
StringBuffers[i]=new StringBuffer(); //对每个数组对象初始化;
for(int i=0;i<StringBuffers.length;i++){
StringBuffers[i].append("string buffer at index"+i);
}
}
}
StringBuffers[i]=new StringBuffer();
StringBuffers[i].append("string buffer at index"+i);
}
StringBuffers append(string str)
StringBuffers append(int num)
StringBuffers append(Object obj)
可见它要连接字符串就只能连接一个字符串
特别是String类的对象的长度是不能变化的
而String str="love";
str=str+"You";虽然长度变了,但是在创建了新对象str才变了(旧对象也是str)
string变长了实质也是利用StringBuffer类的append方法以+重载实现所以代码应该这样写public class WhatHappens{
public static void main(String[] args){
StringBuffer[] StringBuffers=new StringBuffer[10];
for (int i=0;i<StringBuffers.length;i++){
StringBuffers[i].append("string buffer at index").append(i);
}
}
}
这条语句只说明并创建了stringbuffer型的引用,对于类类型数组,你还需要逐个进行初始化。如:
Point points=new Point[10];
points[1]=new Point();
points[2]=new Point();
..............当然,你也可以直接进行静态初始化:
StringBuffer stringbuffers[]={"a","b","c","d","e"}