我已经writen像这样的代码:Java.lang.String.contains()方法与 “” 字符串
String name="";
String path="hai";
if(path.contains(name))
{
System.out.println("its working"+name.length());
}
输出: 其working0
我不明白为什么if条件满足。请帮助
我已经writen像这样的代码:Java.lang.String.contains()方法与 “” 字符串
String name="";
String path="hai";
if(path.contains(name))
{
System.out.println("its working"+name.length());
}
输出: 其working0
我不明白为什么if条件满足。请帮助
所有非null
字符串包含空字符串""
。
在你的代码中,if
它执行的那一刻,是,其实:
if ("hai".contains(""))
表达的if
内产生true
,满足它。
关于输出,再次,它是这样的:
System.out.println("its working" + "".length());
因此打印its working0
。
的答案是正确的。空字符串“”是任何字符串的子字符串。就像空集是任何集的一个子集。
如果评估"name".substring(0,0)
你""
。因此,“”是“名称”的子字符串。
的contains
方法使用indexOf
方法在内部。如果你会看在源代码中更深层次的,那么你会发现像
if (targetCount == 0) {
return fromIndex;
}
其中targetCount
是目标字符串的(在你的情况下,空字符串)长度的片段,正如你可以看到,如果的长度目标字符串是0则该方法返回的fromIndex,其中有0。contains
的价值回归真实的,因为0 > -1
,体内含有的方法是这样的
indexOf(s.toString()) > -1
这不是太大的问题。一个空字符串是字符串的一个子字符串(这里)。我想你是问为什么,但答案是:因为这是'包含'的工作原理。 (从一个集合的角度来看它是有意义的,空字符串是空集合)。 – keyser 2014-09-28 17:52:50