static final String NEWLINE = System.getProperty("line.separator");
Vector<String> text_vec = ...;
FileWriter file_writer = new FileWriter(path);
BufferedWriter buffered_writer = new BufferedWriter(file_writer);
try {
for (String text: text_vec) {
// Case 1: String concatenation
buffered_writer.write(text + NEWLINE);
// Case 2: Extra call to write()
buffered_writer.write(text);
buffered_writer.write(NEWLINE);
}
}
finally {
buffered_writer.close();
}
就第一种情况而言,据我所知,Java编译器会自动分配一个StringBuilder对象来处理字符串连接。由于在编译时无法预知字符串的值,因此不可能在“编译期”进行连接。
那么问题来了:哪种方法更有效(CPU /内存/挂钟时间)?
关于“有效”的确切定义,我留给回答者们去解释。我不是Java虚拟机方面的专家。