我的问题是最好的例子。如果常量会阻止它被使用,优化器是否会阻止创建字符串参数?
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
}
优化程序(如果写入权限)应该删除它们。 –
实际上,A和C中的字符串都是文字,因此被实施,因此不会以任何方式创建字符串。但是这个问题并不重要,我明白你的意思。 – delnan
@JesusRamos编译器作者想与你合作,关于正确性和实用性 – delnan