java - java是否进行内部优化?

标签 java optimization

Java 是一种 OOP 语言,它具有多个用于各种目的的内置类和方法。 String 类就是这样的一个例子。 length() 方法确定字符串的长度。 例如,

String str = "hello";
for(int i=0;i<str.length();i++)
{
//code
}

这里,如果变量 i 小于字符串的长度,则评估条件,然后循环迭代。但是,它是否每次都确定长度?

方法 length() 是否在每次评估条件之前调用?如果是这种情况,那么 Java 是否将变量的值内部存储在寄存器中以便快速访问(或者)程序员必须像这样显式地执行此操作:

String str = "hello";
int len = str.length();
for(int i=0;i<len;i++)
{
//code
} 

这种方法的效率如何?

最佳答案

现代 JIT 可能会注意到 length() 是最终类的简单 getter,返回最终原始值,并用 int 值本身替换方法调用。对于 C 和其他语言来说,优化惩罚是正确的,但是不是java。 C 的 strlen 遍历 char 数组以查找字符串结尾字符。

关于java - java是否进行内部优化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29314537/

相关文章:

java - SnakeYAML:是否可以获取对象的 anchor 名称?

html - 如何优化css样式

c# - 如何将项目 { a_0, .., a_N } 合并到 K 组中,以便合并过程成本最低?

java - 是否可以使用常规 JVM 创建一个不会被任何其他线程抢占的高优先级线程?

java - 如何通过sql "Like"运算符找到合适的句子?

java - 变量未根据另一个变量的更改进行更新

java - 使用当前 Java 运行时 (7u45) 进行编译并在运行时版本 1.6.0 上运行

Java Paint 'stuttering' -列表并发

python - 如何让 celery 任务调用异步任务?

excel - 宏运行两次时内存不足