我的问题最好举个例子。
public static boolean DEBUG = false;
public void debugLog(String tag, String message) {
if (DEBUG)
Log.d(tag, message);
}
public void randomMethod() {
debugLog("tag string", "message string"); //Example A
debugLog("tag string", Integer.toString(1));//Example B
debugLog("tag string", generateString());//Example C
}
public String generateString() {
return "this string";
}
我的问题是,在任何示例中,A、B 或 C - 因为字符串最终不会被使用,优化器会删除它吗?
或者换一种方式问,做下面这样会不会更好,从而确保不会创建字符串对象?
public void randomMethod() {
if (DEBUG) debugLog("tag string", "message string"); //Example A
if (DEBUG) debugLog("tag string", Integer.toString(1));//Example B
if (DEBUG) debugLog("tag string", generateString());//Example C
}