我一直在阅读 Android 开发者网站上的性能提示,其中一项建议是 use static final for constants .该示例说明了 static final 对 int 和 string 声明的使用。关于为什么声明 int 时 static final 更快的解释很清楚。但是,对于字符串示例,它仅声明引用该字符串的代码将使用“相对便宜的字符串常量指令”。
我试图查找此指令在运行时如何执行以及为什么它更便宜,但找不到任何东西。谁能详细说说字符串常量操作?
最佳答案
给出的示例声明了两个常量:
static final int intVal = 42;
static final String strVal = "Hello, world!";
由于 final 关键字,该类不需要 <clinit>
方法了。此外,int 值在您使用该常量的地方按原样使用。没有字段查找来查找 intVal
对象的字段,而不是值 42
无处不在。
同样的优势也适用于字符串。不必在类中查找字段,使用常量的代码可以只使用对字符串位置的预编译引用。
这也使得其他优化成为可能。例如,字符串的长度在编译时也是已知的,因此它可能会被优化掉并由其结果替换。
关于android - Android 中的 "string constant"操作是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34520388/