【问题标题】:"Hello".indexOf("") returns 0 [duplicate]"Hello".indexOf("") 返回 0 [重复]
【发布时间】:2018-03-21 13:59:41
【问题描述】:

如果我尝试在字符串中查找空字符的索引,我只是试图找出编译器会做什么。我记得有些空字符总是附加到字符串的末尾,所以我期待代码下面给我5。

当我输入这个时:

String s = "Hello";
System.out.println(s.indexOf(""));

输出为 0

请帮忙!

【问题讨论】:

  • "" 不是“空字符”——它是一个空字符串。并且 Java 不会在末尾存储带有“空字符”的字符串。它将它们存储为char 数组
  • "" 不是空字符。这是一个空字符串
  • 你想到的是 C,而不是 java - C 字符串以空字符终止
  • "" 和 null 不同
  • Java String 中没有空字符,除非您自己添加一个。如果要查找字符串的结尾,只需使用s.length()。你到底想做什么?

标签: java string indexof


【解决方案1】:

首先,如果您要查找空字符,您可能会想要 (char)0,因为 "" 是一个空字符串(无字符)。

其次,如果 Java 使用空字符(他们不必 IIRC),那么他们会将其隐藏。

编辑:我的第三点是因为我不确定了。

第二次编辑:我查了一下,Java 字符串不是以空值结尾的。它们依赖于长度字段。

【讨论】:

  • 谢谢大佬!帮助!
  • (char)0”或"\0",如果你想要String
  • 再次感谢伙计!只是另一个小Q,给定范围时的substring()函数,如“Something”.substring(2,5),它给出“met”而不是“meth”,所以它会附加一个空字符串或null或其他东西到底是这样还是那样?
  • Java 中的 endIndex 参数是独占的。所以你得到了 str[2]、str[3] 和 str[4]。
  • 谢谢你!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-25
  • 1970-01-01
  • 1970-01-01
  • 2016-03-18
  • 2012-01-30
  • 2012-09-01
相关资源
最近更新 更多