eri*_*cso 2 java vector stringbuffer
我有一个包含许多对象的向量。我的代码使用循环根据特定条件将对象添加到 Vector。我的问题是,当我将对象添加到 Vector 时,原始对象引用是否添加到向量中,或者 Vector 是否创建该对象的新实例并添加它?
例如,在以下代码中:
private Vector numbersToCalculate;
StringBuffer temp = new StringBuffer();
while(currentBuffer.length() > i) {
//Some other code
numbersToCalculate.add(temp);
temp.setLength(0); //resets the temp StringBuffer
}
Run Code Online (Sandbox Code Playgroud)
我正在做的是将“temp”StringBuffer 添加到numbersToCalculate Vector 中。我应该在循环中创建一个新的 StringBuffer 并添加它,还是这段代码可以工作?谢谢您的帮助!
埃里克
每次都需要创建一个新的 StringBuffer。Vector 中的每个项目项只是指向同一个 StringBuffer 对象的指针,因此每次循环时,您都会重置 stringbuffer 的单个实例并向 Vector 添加相同的引用。
只需替换temp.setLength(0);为temp = new StringBuffer();