Java String.indexOf和空字符串

tme*_*enh 37 java string

我很好奇为什么String.indexOf在要求字符串中的空字符串的索引时返回0(而不是-1).

Javadocs只说这个方法返回指定字符串的字符串中的索引,如果找不到字符串,则返回-1.

对我来说,这种行为似乎非常出乎意料,我本来期待-1.任何想法为什么会发生这种意外行为?我至少认为这在方法的Javadocs中值得注意...

System.out.println("FOO".indexOf("")); // outputs 0 wtf!!!
System.out.println("FOO".indexOf("bar")); // outputs -1 as expected
System.out.println("FOO".indexOf("F")); // outputs 0 as expected
System.out.println("".indexOf("")); // outputs 0 as expected, I think
Run Code Online (Sandbox Code Playgroud)

Poi*_*nty 117

空字符串无处不在,无处可去.它始终在所有的弦中,渗透着它们存在的本质,然而当你寻求它时,你永远不会瞥见它.

你可以在字符串的开头放置多少个空字符串?

那个学生对老师说,

老师,我相信我已经找到了空字符串的本质.空的绳子就像一团灰尘,当灰尘自由地漂浮在房间里,在一束阳光下闪闪发光时,它会自由地漂浮在绳子上.

老师回复了学生,

嗯.一个好的概念.现在告诉我,灰尘在哪里,阳光在哪里?

老师用带子敲打学生,并指示他继续冥想.

  • 我们非常需要像你这样的更多用户.我在相关帖子上阅读了你的一个答案,并且已经从你的个人资料中的其他答案中解决了最后一个问题.干得好,禅师. (5认同)

T .*_*T . 31

那么,如果有帮助,你能想到的"FOO"作为"" + "FOO".

  • 实际上,可以在字符串中的任何两个相邻字符之间以及开始和结束处找到空字符串.第一个这样的实例是字符串的开头,即位置0. (5认同)
  • @Ali G:4个不同的时间:在位置0,1,2和3,因为你可以通过调用`.substring(0,0)`直到'.substring(3,3)`来"`FOO"来轻松验证`. (3认同)