【发布时间】:2014-10-20 22:03:42
【问题描述】:
我正在研究 Java SE7 String 类的反编译源,特别是在 equalsIgnoreCase 方法中,令我感到奇怪的是以下行(在 while 循环中执行,省略了本地变量):
if (((c1 = this.value[(o1++)]) != (c2 = target[(o2++)]))
&& (toUpperCase(c1) != toUpperCase(c2))
&& (toLowerCase(c1) != toLowerCase(c2))) {
return false;
}
我想知道为什么要检查 c1 和 c2 的大小写形式是否不相等。当然,如果大写比较相等,甚至永远不会达到小写......但是,我被引导相信有些情况下大写(c1)!=大写(c2)并且字符仍然相等小写比较。
有人建议吗?
【问题讨论】:
-
会不会是一些非拉丁字符比较大小写相等,反之亦然?无论如何,这是个好问题。
-
@Mena - 实际上并不好。 1)它是重复的。 2)答案在源代码cmets中,源代码可以从很多地方免费获得。
-
@StephenC 哎呀。应该做我的功课。
标签: java string comparison uppercase lowercase