<p>Title is the entire question. Can someone give me a reason why this happens?</p>

This method compares the value parameter to the substring at the beginning of this string that is the same length as value, and returns a value that indicates whether they are equal.
To be equal, value must be an empty string (Empty), a reference to this same instance, or match the beginning of this instance.
.NET String.StartsWith
true if the character sequence represented by the argument is a prefix of the character sequence represented by this string; false otherwise.
Note also that true will be returned if the argument is an empty string
or is equal to this String object as determined by the equals(Object) method.
Java String.startsWith