== 和equals
Java 程序中测试两个变量是否相等有两种方式,一种是利用==运算符,另一种是利用equals方法。
当使用==来判断两个变量是否相等时 :
如果2个变量是基本类型的变量,且都是数值型(不一定要求数据类型严格相同),则只要两个变量的值相等,使用==判断就将返回true。
但对于两个引用类型的变量,必须它们指向同一个对象时,==判断才会返回true,
Set 集合就是用equals方法判断元素是否重复的. (还需比较hashcode)
判断两个对象是否相等,需重写equals方法.
class Person{ private String name; private String idStr; public Person(){ } public Person(String name,String idStr){ this.name=name; this.idStr=idStr; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getIdStr() { return idStr; } public void setIdStr(String idStr) { this.idStr = idStr; } //重写equals方法,提供自定义的相等标准 public boolean equals(Object obj){ //只有当obj是person对象 if(obj!=null&&obj instanceof Person){ Person personObj=(Person) obj; //并且当前对象的idStr与obj对象的idStr相等才可判断两个对象相等 if(this.getIdStr().equals(personObj.getIdStr())){ return true; } } return false; } } public class OverrideEqualsRight { public static void main(String[] args) { Person p1=new Person("tom1","1234"); Person p2=new Person("tom2","1234"); Person p3=new Person("tom3","9012"); //p1和p2的值相等,所以输出true System.out.println("p1和p2是否相等?: "+p1.equals(p2)); //p2和p3的idStr不相等,所以输出false System.out.println("p2和p3是否相等?: "+p2.equals(p3)); } }