使用java比较字符串

使用java比较字符串,java,Java,我必须创建一个equals方法,如果政客的头衔相同,它将返回true。如何比较字符串 到目前为止,我就是这样写的: public class Politician implements Priority{ private String name, title; private int a; public Politician(String n, String t, int p){ name=n; title=t; a=p; } public boolean equals(

我必须创建一个equals方法,如果政客的头衔相同,它将返回true。如何比较字符串

到目前为止,我就是这样写的:

public class Politician implements Priority{
private String name, title;
private int a;
public Politician(String n, String t, int p){
    name=n;
    title=t;
    a=p;
}
public boolean equals(Politician a){
    if(title.equals(a.title))
        return true;
    return false;
}
然而,它总是返回false。即使在我测试时:

Priority t4= new Politician("Arnie", "Governor", 4);
    Politician t5= new Politician("Bill", "Governor", 10);
    System.out.println(t5.equals(t4)); 
    System.out.println(t4.equals(t5));
我以前写过equals,我不知道它为什么不再工作了

公共布尔equalsa不会重写java.lang.Object类中的equals方法

声明为公共布尔equalsObject以重写该方法

public boolean equals(Object a) {
        Politician p = (Politician) a;
        return title.equals(p.title);
    }
顺便说一句,在政客类中使用p.title是完全合法的,即使在政客类中标题是私有的。签出此帖子:

试试这个:


如果变量是私有的,您如何处理.title?你应该做一个getter来获取值。public String getTitle{return this.title;}然后简单地更改equals方法以执行public boolean equalsa{return this.title.equalsa.getTitile;}将字符串更改为publicOr,如果需要私有字段,则添加一个gettermethod@3kings它是同一个类,所以可以访问私有变量。
public class Politician extends Priority{

    public String name, title;
    public int a;

    public Politician(String n, String t, int p) {
        name = n;
        title = t;
        a = p;
    }

    public boolean equals(Object o) {
        Politician a = (Politician) o;
        //System.out.println(a.title +" -  "+title);
        if (title.equals(a.title)) {

            return true;
        }
        return false;
    }

    public static void main(String[] args) {
        Priority t4 = new Politician("Arnie", "Governor", 4);
        Politician t5 = new Politician("Bill", "Governor", 10);
        System.out.println(t5.equals(t4));
        System.out.println(t4.equals(t5));
    }
}