たとえば、次のコードがあるとします。
String s1 = "foobar";
s1 = s1.substring(3);
そのコードは次のコードよりも効率が悪いでしょうか。
String s1 = "foobar";
s1 = s1.substring(3, 6);
単一パラメーターの方法は、長さに達するまでループを使用してインデックスをループするため、2 つのパラメーターの方法はより効率的なパフォーマンスになると考えていました。これは、JVM がlength()
メソッドを呼び出して、ループを停止するタイミングを見つける必要があることを意味します。
ただし、2 つのパラメーターを使用する方法は、最後のインデックス番号に到達するまでループするだけです。
私の仮説を肯定または否定できる人はいますか?
編集: ソース (最後の return ステートメント) のこのコードはよくわかりませんが、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);
}