对StringBuilder indexOf有误导性的javadoc评论?

时间:2013-06-12 23:15:32

标签: java stringbuilder

我正在尝试从StringBuilder类的indexOf(String str, int fromIndex)方法的javadoc中理解以下注释。

它说:

  

从指定的索引处开始,返回指定子字符串第一次出现的字符串中的索引。返回的整数是最小值k,其中:

    k >= Math.min(fromIndex, str.length()) &&
                  this.toString().startsWith(str, k)
     

如果不存在这样的k值,则返回-1。

现在,我无法在str.length()中看到Math.min(fromIndex, str.length())的原因,因为它允许在索引上找到String<的fromIndex。我错过了什么,或者这只是一个误导/错误的意见?

编辑as pointed below这是来自Java 7 javadoc的评论; java 6有正确的评论。

2 个答案:

答案 0 :(得分:0)

没有条件基本归结为第一个k,使得k至少为fromIndex且小于或等于str.length(),其中该字符串包含所需的子字符串。

如果str.length() < fromIndex,那么startsWith条件将始终为false,因为str.length()不是生成的字符串的有效索引。

答案 1 :(得分:0)

这是一个错误。它应该是this.length()而不是str.length()

fromIndex为空的情况下,this.length()允许大于str

示例:

StringBuilder sb = new StringBuilder("Example");
System.out.println(sb.indexOf("", 1234)); //Outputs sb.length(), which is 7.

注意:String#indexOf(String, int)的行为方式相同。

相关问题