例如,可以說我有以下代碼:在Java中,是substring(int k,int y)還是substring(int k)更高效的性能?
String s1 = "foobar";
s1 = s1.substring(3);
請問這代碼少效率比:
String s1 = "foobar";
s1 = s1.substring(3, 6);
我在想,這兩個參數的方法是更高效的性能明智的,因爲單參數方法使用循環遍歷索引直到達到長度。這意味着JVM必須調用length()
方法來確定何時停止循環。
但是,兩個參數方法只循環到達到最後一個索引號。
任何人都可以證實或否認我的假設嗎?
編輯: 我真的不明白在源代碼(最後返回語句),但這裏是java String類來源:
public String substring(int beginIndex, int endIndex) {
if (beginIndex < 0) {
throw new StringIndexOutOfBoundsException(beginIndex);
}
if (endIndex > count) {
throw new StringIndexOutOfBoundsException(endIndex);
}
if (beginIndex > endIndex) {
}
return ((beginIndex == 0) && (endIndex == count)) ? this : // I don't understand this part
new String(offset + beginIndex, endIndex - beginIndex, value);
}
查找到Strings.substring – AlexWien
的源代碼,您可以確認或標杆兩個版本自己否認這一點:) – NPE
不要過早優化 –