Короче говоря, JVM внутренне оптимизирует следующий код
public void test(String str)
{
int a = 0;
for( int i = 0; i < 10; i++)
{
a = a + str.length();
}
}
вести себя так же эффективно, как ниже:
public void test(String str)
{
int len = str.length();
int a = 0;
for( int i = 0; i < 10; i++)
{
a = a + len;
}
}
Если он оптимизирует, делает ли это это путем кэширования значения str.length() внутри?