另一个问题回答了我如何在编译时评估字符串文字的连接。在我正在处理的一个项目中,我们使用StringBuffer
. 它只附加文字,所以它让我思考是否会发生类似的事情。
在下面的代码中,缓冲区是否会在编译时附加其内容?当多个线程试图执行此函数时,这将如何表现?
public static String querySomething(int arg){
StringBuffer buffer = new StringBuffer();
buffer.append("A quite long query");
buffer.append("that doesn't fit in one line");
buffer.append("...");
}
将 定义为常量不是更好吗,String
因为它是线程安全的,而且我们知道它可以在编译时与加号运算符连接起来。就像是:
private final static REALLY_LONG_QUERY1 = "A quite long query that"
+"doesn't fit in one line"
+"...";