车风波 发表于 2012-6-29 08:55
把代码拆开:
new Integer(s1.length()) 这个Integer用自己的compareTo方法去和new Integer(s2.length())做 ...
原来如此,多加一个括号就明了了。少了那个括号总会让初学者误解。谢谢了。作者: 李天甲 时间: 2012-6-29 09:07
其实最明了的是这样
integer len1=...
integer len2=...
int num = len1.compareTo(len2);
你写成原来那样不见得会快多少....但是括号多了容易错作者: 张天天 时间: 2012-6-29 09:23
这个很简单啊
int num = new Integer(s1.length()).compareTo(new Integer(s2.length()));
就是调用了一个方法啊compareTo我把API的方法拷过来给你看看,你就空白了啊
public int compareTo(Integer anotherInteger)
Compares two Integer objects numerically.
Specified by:
compareTo in interface Comparable<Integer>
Parameters:
anotherInteger - the Integer to be compared.
Returns:
the value 0 if this Integer is equal to the argument Integer; a value less than 0 if this Integer is numerically less than the argument Integer; and a value greater than 0 if this Integer is numerically greater than the argument Integer (signed comparison).
Since:
1.2 作者: 柯玲 时间: 2012-6-29 10:49
1,因为String的length()方法返回的是int类型,而int类型没有compareTo()比较方法,若要简写成LZ红色字体部分的格式只能通过int类型的包装器类Integer的对象,可以查看API,Integer是实现了Comparable<Integer>接口的,当然也就重写了compareTo方法。
2,此处写new的原因也就是通过创建对象调用方法
3,调用compareTo方法后返回值类型为int
从此处看出LZ的代码并不完全,若用new Integer()的方式看不懂,我建议您用以下方式写:
public int compare(Object o1,Object o2){
String s1=(String)o1;
String s2=(String)o2;
if(s1.length()>s2.length()){
return 1;
}
if(s1.length()==s2.length()){
return s1.compareTo(s2);
}
return -1;
}
复制代码
作者: 张扬123 时间: 2012-6-29 17:30
这个我刚开始也看不懂,视频里面老师说了好像是省事的写法。其实看仔细点就明白了.
Integer(s1.length()).compareTo(new Integer(s2.length()));这个你能看懂的话,前面加的new跟后面的意义一样的。
用空格隔开写给你看:int num = new Integer(s1.length()). compareTo (new Integer(s2.length()));
这样不就so easy了么,呵呵。