Java.lang.String.contains()方法,并带有&引用;一串
我写了这样的代码:Java.lang.String.contains()方法,并带有&引用;一串,java,Java,我写了这样的代码: String name=""; String path="hai"; if(path.contains(name)) { System.out.println("its working"+name.length()); } 输出: 它的工作原理 我无法理解if条件是如何满足的。请帮助测试路径是否包含空字符串,但每个字符串(甚至空字符串)都与此条件匹配,因此测试始终通过 所有非null字符串都包含空字符串“” 在代码中,
String name="";
String path="hai";
if(path.contains(name))
{
System.out.println("its working"+name.length());
}
输出:
它的工作原理
我无法理解if条件是如何满足的。请帮助测试路径是否包含空字符串,但每个字符串(甚至空字符串)都与此条件匹配,因此测试始终通过 所有非
null
字符串都包含空字符串“
”
在代码中,执行时的if
实际上是:
if ("hai".contains(""))
if
中的表达式产生满足它的true
关于输出,再次说明如下:
System.out.println("its working" + "".length());
因此,打印
其工作方式0
答案是正确的。空字符串“”是任何字符串的子字符串。就像空集是任何集合的子集一样
如果计算
“name.”子字符串(0,0)
,则得到“
。因此,“”是“name”的子字符串。contains方法在内部使用indexOf
方法。如果您深入查看源代码,就会发现一个类似
if (targetCount == 0) {
return fromIndex;
}
其中,targetCount
是目标字符串的长度(在您的例子中为空字符串),您可以看到,如果目标字符串的长度为0,则该方法返回值为0的fromIndex。contains
返回true,因为0>-1
,contains方法的主体如下所示
indexOf(s.toString()) > -1
这篇文章的标题说,我可以请你为我修改的上面的例子做些什么吗?这不是一个很大的问题。空字符串是字符串(此处)的子字符串。我想你是在问为什么,但答案是:因为
包含就是这样工作的。(从集合的角度来看,它是有意义的,空字符串就是空集合)。