I know that compareTo
returns a negative or positive result on how well one string correlates to the other, but then why:
public class Test {
public static void main(String[] args) {
String y = "ab2";
if(y.compareTo("ac3") == -1) {
System.out.println("Test");
}
}
}
is true and
public class Test {
public static void main(String[] args) {
String y = "ab2";
if(y.compareTo("ab3") == -1) {
System.out.println("Test");
}
}
}
is also true?
The general contract of Comparable.compareTo(o)
is to return
In your example "ab2".compareTo("ac3") == -1
and "ab2".compareTo("ab3") == -1
only means that "ab2"
is lower than both "ac3"
and "ab3"
. You cannot conclude anything regarding "ac3"
and "ab3"
with only these examples.
This result is expected since b
comes before c
in the alphabet (so "ab2" < "ac3"
) and 2
comes before 3
(so "ab2" < "ab3"
): Java sorts Strings lexicographically.
compareTo
for String
s returns -1 if the first String
(the one for which the method is called) comes before the second String
(the method's argument) in lexicographical order. "ab2" comes before "ab3" (since the first two characters are equal and 2 comes before 3) and also before "ac3" (since the first character is equal and b comes before c), so both comparisons return -1.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With