我是 Java 初学者,可能我问的是一些显而易见的问题,但无论如何。
根据Java.Lang.StringcompareTo()方法说明:
The comparison is based on the Unicode value of each character in the strings.
我正在比较字符串
public void compareString() {
String str1 = "test-2014";
String str2 = "test195519-9022c72bc161";
String str3 = "test200101-ee4d99b1492c";
String str4 = "test212941-884e3f03fe1e";
System.out.println(str1.compareTo(str2));
System.out.println(str1.compareTo(str3));
System.out.println(str1.compareTo(str4));
}
------------ OUTPUT -----------
-4
-5
-5
我期望所有三种情况下的输出都相同,因为每种情况下第五个字符 (1, 2, 2) 的 Unicode 值都大于“str1”中的第五个字符 (-)。
您能解释一下为什么会发生这种情况吗?
认为
最佳答案
返回哪个负数并不重要。这里唯一重要的信息是 compareTo
返回的符号。它是否返回 -1
、-4
、-5
或 -1000000
都没有关系。唯一可以得出的结论是 str1
小于其他每个字符串。
来自the Javadocs for the compareTo
method in Comparable
:
Compares this object with the specified object for order. Returns a negative integer, zero, or a positive integer as this object is less than, equal to, or greater than the specified object.
关于Java:将字符串与 "-"(破折号)进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22000890/