我已經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