Rumah > Soal Jawab > teks badan
程序的结构大致如下
class A {
sort(**Comparable[] x**){
//此处进行插入排序等
}
。。。main(String[] args)
{
String[] arr={......} //一个字符串数组
A a=new A();
a.sort(**arr**);
}
}
1.sort(...)方法需要的参数是一个Comparable数组,而arr是一个字符串数组,为什么可以直接传入arr那?
2.x[i]和a[i]表示同一个元素,为什么那?
3.这样写有什么好处那?
PHP中文网2017-04-17 16:17:05
String实现了Comparable接口,所以每一个String对象均可以看作Comparable对象
你可以看String源码
public final class String implements java.io.Serializable, Comparable<String>, CharSequence
{
public int compareTo(String anotherString)
{
int len1 = value.length;
int len2 = anotherString.value.length;
int lim = Math.min(len1, len2);
char v1[] = value;
char v2[] = anotherString.value;
int k = 0;
while (k < lim)
{
char c1 = v1[k];
char c2 = v2[k];
if (c1 != c2)
{
return c1 - c2;
}
k++;
}
return len1 - len2;
}
}
这个是为了实现多态,举个例子,A extends B,那么子类A的任何对象都可以看作是B的对象;
同理,A implements B,B是一个接口,A的任何对象均可以看作是B的对象。
这么写的好处就是:很多方法不需要再重载。你不需要为每个类都写一个sort方法,只要写一个sort就行了。其他很多方法也不再需要重载。