问题1 String类和Object类中的equals方法比较
2015-11-22 13:20
447 查看
1、String中的equals方法
结果为:true
因为String类中的equals方法重写了Object类中的equals方法。
Compares this string to the specified object. The result is
将此字符串与指定的对象比较。当且仅当该参数不为
2、Object类中的equals方法
结果为:false
对于new出的对象之间进行equals比较,在没有重写equals方法的情况下,他们之间的比较基于他们在内存中的存放的地址,所以上面输出的为false。
那么如果要使他们输出结果为true该如何重写equals呢?
好,请看下面一段代码:
结果为:true
这里重写了Object类的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
trueif and only if the argument is not
nulland is a
Stringobject that represents the same sequence of characters as this object.(String类equals方法 英文API文档)
将此字符串与指定的对象比较。当且仅当该参数不为
null,并且是与此对象表示相同字符序列的
String对象时,结果才为
true。(String类equals方法 中文API文档)
2、Object类中的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; }
结果为: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方法
相关文章推荐
- 【转载】Animation 动画(三)ObjectAnimator、valueAnimator
- Objective-C 中的元类(meta class)
- [iOS]Objective-C的语言版本,与Xcode版本有对应关系吗?
- IOS开发基础Object-C(08)—OC内存管理(2)-对象之间的内存管理
- OC中的枚举
- Ry’s Objective-C Tutorial → Data Types---Date Programming
- Ry’s Objective-C Tutorial → Data Types---NSDictionary
- Ry’s Objective-C Tutorial → Data Types---NSArray
- Ry’s Objective-C Tutorial → Data Types---NSSet
- Ry’s Objective-C Tutorial → Data Types---NSString
- Ry’s Objective-C Tutorial → Data Types---NSDecimalNumber
- Ry’s Objective-C Tutorial → Data Types---NSNumber
- Ry’s Objective-C Tutorial → Data Types---C Primitives
- Ry’s Objective-C Tutorial---Objective-C Data Types
- Ry’s Objective-C Tutorial---Memory Management
- Ry’s Objective-C Tutorial---Exceptions & Errors
- Ry’s Objective-C Tutorial---Blocks
- Ry’s Objective-C Tutorial---Categories
- Ry’s Objective-C Tutorial---Protocols
- Ry’s Objective-C Tutorial---Methods