Java:将字符串与 "-"(破折号)进行比较

标签 java string compare

我是 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/

相关文章:

java - 如何创建 oracle.sql.ARRAY 对象?

python - Python中的字符串到字典

c# - 在两个字符串字段上实现 IComparable 接口(interface)

java - 在 Java 中对 IP 地址进行排序

java - java中Thread.interrupted()如何工作?

java - 未实现 Serialized 的类的序列化

java - Apache Nifi 属性描述符的 dynamicallyModifiesClasspath() 的 Hello world 程序不起作用

string - 如何在 Vala 中从 uint8[] 创建字符串?

string - 如何从字符串中解析一个 int?

java - 为什么这个字符串比较器无法编译?