【发布时间】:2014-10-18 03:50:38
【问题描述】:
考虑以下 Java 代码片段:
String buffer = "...";
for (int i = 0; i < buffer.length(); i++)
{
System.out.println(buffer.charAt(i));
}
由于String 是不可变的并且buffer 没有在循环内重新分配,Java 编译器是否足够聪明以优化for 循环条件中的buffer.length() 调用?例如,它是否会发出等同于以下内容的字节码,其中buffer.length() 被分配给一个变量,并且该变量在循环条件中使用?我读过一些像 C# 这样的语言会做这种优化。
String buffer = "...";
int length = buffer.length();
for (int i = 0; i < length; i++)
{
System.out.println(buffer.charAt(i));
}
【问题讨论】:
标签: java