android - Android 中的 "string constant"操作是什么?

标签 android performance

我一直在阅读 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/

相关文章:

android - 工具 :replace="android:appComponentFactory Error

java - 用于单写入器线程的 AtomicXXX 惰性设置

c++ - 'look up' 关键字的最有效方法

python - 为什么我的 python 程序在 eclipse/pydev 中调试这么慢?

php - 转换编码的 utf-8 JSON

android - 模块根文件夹中缺少文件 google-services.json

android - SQLite rawQuery 不返回任何带有整数参数的结果

java - 在 JSOUP 中提取嵌入式资源链接的最佳方式

mysql - 降低 MySQL 中的持久性以提高性能

android - 在android中的两个不同位置之间每10米获取纬度,经度点