爱程序网

问题1 String类和Object类中的equals方法比较

来源: 阅读:

1、String中的equals方法

 

        String s1 = "String";
        String s2 = "String";
        System.out.println(s1.equals(s2));

 

结果为:true

因为String类中的equals方法重写了Object类中的equals方法。

Compares this string to the specified object. The result is true if and only if the argument is not null and is a String object that represents the same sequence of characters as this object.(String类equals方法 英文API文档)

将此字符串与指定的对象比较。当且仅当该参数不为 null,并且是与此对象表示相同字符序列的 String 对象时,结果才为 true。(String类equals方法 中文API文档)

 

2、Object类中的equals方法

 

 1 Name n1 = new Name("f1","l1");
 2 Name n2 = new Name("f1","l1");
 3 System.out.println(n1.equals(n2));
 4 
 5 class Name {
 6     private String fistname, lastname;
 7 
 8     public Name(String fistname, String lastname) {
 9         this.fistname = fistname;
10         this.lastname = lastname;
11     }
12 
13     public String GetFistName() {
14         return fistname;
15     }
16 
17     public String GetLastName() {
18         return lastname;
19     }
20 
21     public String toString() {
22         return fistname + " " + lastname;
23     }

结果为:false

对于new出的对象之间进行equals比较,在没有重写equals方法的情况下,他们之间的比较基于他们在内存中的存放的地址,所以上面输出的为false。

那么如果要使他们输出结果为true该如何重写equals呢?

好,请看下面一段代码:

 

Name n1 = new Name("f1","l1");
Name n2 = new Name("f1","l1");
System.out.println(n1.equals(n2));
class Name {
	private String fistname, lastname;

	public Name(String fistname, String lastname) {
		this.fistname = fistname;
		this.lastname = lastname;
	}

	public String GetFistName() {
		return fistname;
	}

	public String GetLastName() {
		return lastname;
	}

	public String toString() {
		return fistname + " " + lastname;
	}
	
	public boolean equals(Object obj){
		if(obj instanceof Name ){  //判断obj是否为Name类型
			Name name = (Name) obj; //由于访问Name特有的成员,需要把obj装换成Name类
			return(fistname.equals(name.fistname)&&lastname.equals(name.lastname));//判断具体内容是否相等
		}
		return super.equals(obj);
	}
	    

结果为:true

这里重写了Object类的equals方法

  

 


关于爱程序网 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助