为什么要这么写?谁能告诉我?

bsd 2002-04-09 11:37:09
public int compare(Object o1, Object o2) {
String s1 = (String) o1;
String s2 = (String) o2;
int n1=s1.length(), n2=s2.length();
for (int i1=0, i2=0; i1<n1 && i2<n2; i1++, i2++) {
char c1 = s1.charAt(i1);
char c2 = s2.charAt(i2);
if (c1 != c2) { //line A
c1 = Character.toUpperCase(c1);
c2 = Character.toUpperCase(c2);
if (c1 != c2) { //line B
c1 = Character.toLowerCase(c1);
c2 = Character.toLowerCase(c2);
if (c1 != c2)
return c1 - c2;
}
}
}
return n1 - n2;
}
line A 处判断之后为什么还要用line B进行判断?
难道在line A处还有什么特例不成?
...全文
49 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
bsd 2002-04-22
  • 打赏
  • 举报
回复
to sojkey(),
这是jdk中String class的一段代码,看不太明白的说
sojkey 2002-04-10
  • 打赏
  • 举报
回复
不过为什么不一开始就转成小写?
小红帽你从哪里搞来的这个程序,好像不能称之为“榜样”吧
sojkey 2002-04-09
  • 打赏
  • 举报
回复
line B处的判断我想是需要的,line A处判断两字符是否相等,这时"A"是不等于"a"的;line B处判断转换成大写后的两字符是否相等,这时原来的"A"就等于"a"了;但是我想line B下面再判断小写字符相等就没必要的,两个字符的大写字符不同,难道小写还会相同吗?
xhh 2002-04-09
  • 打赏
  • 举报
回复
同意JunyLee(沙子)~
SniperPu 2002-04-09
  • 打赏
  • 举报
回复
一点不多余,因为在第一个if语句前还没有进行大写转换,它是判断两个字符是否相同
sojkey 2002-04-09
  • 打赏
  • 举报
回复
哇哇!沙子真是厉害,连这都想到了。
pfpf
JunyLee 2002-04-09
  • 打赏
  • 举报
回复
转换成小写应该是为了这句:return c1 - c2
例如,c1是下划线,c2是字母,那么c2是小写才会返回负数,大写会返回正数。
不过最后的if语句确实有点多余
qu_shihong 2002-04-09
  • 打赏
  • 举报
回复
我觉得没有必要!
bsd 2002-04-09
  • 打赏
  • 举报
回复
如果都转换成大写的不相等
还有必要再转换成小写的来比较吗?
woowindice 2002-04-09
  • 打赏
  • 举报
回复
首先判断是否2字母相同,如果不同就把他们都转化为大写,如果还不相同就把他们转化为小写,如果不同就返回他们的差

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧