关于StringBuilder indexOf的误导性javadoc评论?
我试图理解StringBuilder类方法的javadoc中的以下注释 它说: 返回指定子字符串第一次出现的字符串内的索引,从指定索引开始。返回的整数是最小值k,其中:关于StringBuilder indexOf的误导性javadoc评论?,java,stringbuilder,Java,Stringbuilder,我试图理解StringBuilder类方法的javadoc中的以下注释 它说: 返回指定子字符串第一次出现的字符串内的索引,从指定索引开始。返回的整数是最小值k,其中: k >= Math.min(fromIndex, str.length()) && this.toString().startsWith(str, k) 如果不存在这样的k值,则返回-1 现在,我看不到Math.min(fromIndex,str.length(
k >= Math.min(fromIndex, str.length()) &&
this.toString().startsWith(str, k)
如果不存在这样的k值,则返回-1
现在,我看不到Math.min(fromIndex,str.length())
中str.length()
的原因,因为它允许在索引编辑:这是来自Java7Javadoc的评论;java 6的注释是正确的。否该条件基本上归结为第一个k,使得k至少是索引中的
,并且小于或等于字符串包含所需子字符串的str.length()
如果str.length()。它应该是this.length()
而不是str.length()
如果str
为空,则允许fromIndex
大于this.length()
例如:
StringBuilder sb = new StringBuilder("Example");
System.out.println(sb.indexOf("", 1234)); //Outputs sb.length(), which is 7.
注意:行为方式相同。Ok。如果你认为<代码> STR <代码>是引用的StrugBu建器,它是有意义的。但是str
是参数名和“要搜索的子字符串”。我现在可以理解了,我想这就是注释的问题所在。嗯,看起来definesString#indexOf(String,int)
与的不同,尽管它在两个版本中的行为相同。Java6文档具有正确的定义。