String对象上char [] .length的实现细节

时间:2015-02-27 16:37:17

标签: java implementation

我想知道数组的长度字段是在内部保存为值,还是在调用时计算。一些示例代码:

/* 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级别,那么另一个线程将回答我的问题。我的问题是针对实现,更多的是字节代码/机器代码级别。我已经阅读了几个具有相同信息的类似问题,但没有一个提供任何实现细节,这是我的问题。

0 个答案:

没有答案