class Person implements Comparable{
String firstName, lastName; //jack跟JOHN Lee跟zhang返回1 zhang跟lee -1
Person(String firstName, String lastName){
this.firstName = firstName;
this.lastName = lastName;
}

String getFirstName(){
return firstName;
}

String getLastName(){
return lastName;
}

public int compareTo(Object o){
Person p = (Person)o;
int firstCmp = firstName.compareTo(p.firstName);
return (firstCmp!= 0 ? firstCmp : 
lastName.compareTo(p.lastName));
}

public String toString(){
return firstName + lastName;
}


}就是实现compareTo方法的时候里面用的firstName.compareTo(p.firstName),然后在主函数调用Collections.sort()方法的时候,它是怎么比较的,firstName不是在Person的构造函数声明的局部变量吗?怎么在这也能调用?帮忙解释下,谢谢了

解决方案 »

  1.   


    this.firstName的意思是当前对象的firstName就是String firstName, lastName; //jack跟JOHN Lee跟zhang返回1 zhang跟lee -1这里的firstName
      

  2.   

    额,我的意思是,在int firstCmp = firstName.compareTo(p.firstName)里面,p.firstName是Person的静态变量,而firstName.compareTo的firstName从哪来的,它不是全局变量啊
      

  3.   

    firstName 类成员变量!
      

  4.   

    p对象是传过来的Object o
    方法用于比较两个p是否是同一个人,比较的方法就是看firstName和lastName是否相同
      

  5.   

    public int compareTo(Object o){
    Person p = (Person)o;
    int firstCmp = firstName.compareTo(p.firstName);
    return (firstCmp!= 0 ? firstCmp : 
    lastName.compareTo(p.lastName));
    } p对象是传进来的是一个person对象  而firstName.compareTo的firstname是当前对象的全局变量 其实也是一个person对象  是两个person的firstname在比较  
      

  6.   

    你的理解反了
    firstName就、是当前对象的firstName,而p.firstName是Object o的属性
    注意这句Person p = (Person)o;
    这里的o是参数,就是从外部传进来的,如果把参数改成Person p1就清晰很多了