3

重複の可能性:
「abcd」.StartsWith(「」) が true を返すのはなぜですか?

次の単純な Java コードは、startsWith()メソッドを使用するだけです。

package startwithdemo;

final public class Main
{    
    public static void main(String[] args)
    {
        System.out.println("My String".startsWith("M"));
        System.out.println("My String".startsWith("My"));
        System.out.println("My String".startsWith(""));
    }
}

trueすべての場合に表示されます。最初の 2 つのケースは明らかですが、最後のケース (空の String) では、 が返されtrueます。どのように?

4

4 に答える 4

10

これがAPIの設計方法であるため、javadocを参照してください

しかし、もっと真剣に言えば、1つの例えはセットを見ることです。文字列が文字のセットであり、空の文字列が空のセットであると想像してみましょう。集合論では、空集合は常に任意の集合の一部です。


空のセットがすべてのセットのサブセットであるのはなぜですか?(ここから取得)

セットAは、Aのすべての要素がBの要素でもある場合に限り、セットBのサブセットです。Aが空のセットである場合、Aには要素がないため、そのすべての要素(存在しない)はBに属します。どんなセットBを扱っていても。つまり、空のセットはすべてのセットのサブセットです。

それを理解する別の方法は、交差点を見ることです。2つのセットの共通部分は、元の各セットのサブセットです。したがって、{}が空集合で、Aが任意の集合である場合、{}交差Aは{}です。これは、{}がAのサブセットであり、{}が{}のサブセットであることを意味します。

あなたは矛盾によってそれを証明することができます。空のセット{}とセットAがあるとします。定義に基づくと、{}にAにない要素がない限り、{}はAのサブセットです。したがって、{}がのサブセットでない場合次に、{}に要素があります。ただし、{}には要素がないため、これは矛盾しているため、集合{}はAのサブセットである必要があります。

于 2012-04-12T21:21:29.430 に答える
3

Javadocから:

戻り値:引数で表される文字シーケンスがこの文字列で表される文字シーケンスのプレフィックスである場合はtrue。それ以外の場合はfalse。 引数が*空の文字列*であるか、equals(Object)メソッドによって決定されたこのStringオブジェクトと等しい場合、trueが返されることにも注意してください。

于 2012-04-12T21:22:30.927 に答える
2

それは本当です:

("" + "My String")明らかに で始まり""ます。

"My String"それはで始まると言っているのと同じです""

于 2012-04-12T21:23:06.083 に答える
1
System.out.println(""+""+""+"string"=="string") // output is true;
于 2012-04-12T21:22:56.443 に答える