有人知道为什么“compareTo”方法在以区分大小写的方式比较两个字符串时在 Java 和 C# 中表现不同吗?
我的意思是,如果我用 Java 输入这段代码:
"你好".compareTo("再见") > 0
它返回“false”,因为大写的 H 低于小写的 b。然而,在 C# 中使用 CompareTo 方法的相同指令返回“true”。
谁能解释一下为什么?
Java String.compareTo 方法根据 Unicode 代码点值强加排序。
public int CompareTo(String anotherString)
比较两个字符串 按字典顺序。比较基于 Unicode 值 字符串中的每个字符。
使用 String.Equals 以及 == 和 != 运算符进行相等性测试 与使用 String.CompareTo 进行字符串比较不同, 比较(字符串,字符串)方法。它们都执行区分大小写的操作 比较。然而,虽然平等测试执行序数 比较时,CompareTo 和 Compare 方法执行文化感知 使用当前文化进行语言比较。因为这些默认 比较方法的不同之处在于比较字符串的方式,我们 建议您始终通过以下方式明确代码的意图 调用显式指定比较类型的重载 来表演。
这里的基本教训是“阅读您调用的方法的文档”。