下面语句是什么意思?很简单的。(300分)

  • 主题发起人 主题发起人 djdsz
  • 开始时间 开始时间
D

djdsz

Unregistered / Unconfirmed
GUEST, unregistred user!
在java.lang包的String.java中有如下的语句,是比较两个字符串(不区分大小写)的:
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 &amp;&amp;
i2<n2;
i1++, i2++) {
char c1 = s1.charAt(i1);
char c2 = s2.charAt(i2);
if (c1 != c2) {
c1 = Character.toUpperCase(c1);
c2 = Character.toUpperCase(c2);
if (c1 != c2) {
c1 = Character.toLowerCase(c1);
//大写不相等,难道小写会相等吗?
c2 = Character.toLowerCase(c2);
//是不是显得多此一举
if (c1 != c2)
return c1 - c2;
}
}
}
return n1 - n2;
}
请各位说说注释部分为什么要那样写。
 
好像是多此一举!
不过,为了程序的强壮性嘛,万一第一步转换出错了,[:D]
搞不懂!
 
当然不是多此一举,转换成小写算两者之差返回啊
 
但大写的两者之差和小写的两者之差应该是一样的,'c'-'a'难道不等于'C'-'A'吗
 
为了统一返回值啊。
 
呵呵,是啊,他是要返回小写差啊。不过确实应该简化一下,不用比大写,直接比小写,不同
就直接返回差。而且转成大写返回了从代码上看也没什么用处。总之,大小写应该去掉一处。
 
他的意思是大写优先? 相等则返回大写字符
 
上一步就应该化成小写再比较!!!
 
上一步就应该化成小写再比较!!!
 
比较一个就可以了
 
这叫容错做的好!
 
可能有他的道理,JAVA的字符都是16位的呀。
 
干嘛总想着'a'和'A'?
Java中的char是支持unicode的。这么写想来是为了这方面的需要吧。
 
有玄机??
听听.
 
應該是UniCode的問題
 
考虑问题要周全,所以人家这样写是有一定道理的。
 
我认为这样完全没有必要,正如注释中说的一样。若java的字符串处理隐藏着什么玄机的化,
导致一定要这样处理的化,我看真要扔到“java”去了。
 
或许你试试用不同的字符集去进行运算,看看是不是一样的再说吧。。。
[:)]
 
统一返回值
 
后退
顶部