我想知道数组的长度字段是在内部保存为值,还是在调用时计算。一些示例代码:
/* Makes several calls to string.length() in the body of the method */
String fooMyDataONE(String string, int queryLength) {
if(string.length() == queryLength) {
return workJobEquals(string);
}
else if(string.length() > queryLength) {
return workJobGreaterThan(string);
}
// else string.length < queryLength
return workJobLessThan(string);
}
/* Makes a single call to string.length() and stores it in a local variable */
String fooMyDataTWO(String string, int queryLength) {
int actualLength = string.length();
if(actualLength == queryLength) {
return workJobEquals(string);
}
else if(actualLength > queryLength) {
return workJobGreaterThan(string);
}
// else actualLength < queryLength
return workJobLessThan(string);
}
那么这两种方法之间的优缺点是什么?作为一个想法,我也想知道编译器如何处理Java类中的两个方法。我真的只是想了解它是如何实现的,我无法在javadoc中找到这些细节。
编辑:如果我的问题针对Java级别,那么另一个线程将回答我的问题。我的问题是针对实现,更多的是字节代码/机器代码级别。我已经阅读了几个具有相同信息的类似问题,但没有一个提供任何实现细节,这是我的问题。