java重写toString方法实例|继承Object类|equals和toString方法



java重写toString方法实例|继承Object类|equals和toString方法。Object类介绍。

Object类
³ Object类是所有Java类的根基类
³ 如果在类的声明中未使用extends关键字指明其基类,则默认基类为Object类
public class Person {

}
³ 与以下效果一样:
publicclass Person extends Object {

}
java toString方法
³ Object类中定义有publicString toString()方法,其返回值是String 类型,描述当前对象的有关信息。
³ 在进行String与其它类型数据的连接操作时(如:System.out.println(“info”+person)),将自动调用该对象类的 toString()方法
³ Object类中toString方法的源代码是:
public String toString() {

return getClass().getName() + “@” + Integer.toHexString(hashCode());

}

默认是打印:类名+哈希码(根据对象地址计算得出 )!

³ 可以根据需要在用户自定义类型中重写toString()方法。比如String类就重写了toString方法,源代码如下:


public String toString() {

return this;

}

java equals方法实例介绍
³ Object类中定义有:
² publicboolean equals(Object obj)方法
± 提供定义对象是否“相等”的逻辑。
² Object的 equals 方法 定义为:x.equals( y ) 当 x 和 y是同一个对象的应用时返回 true 否则返回 false
查看Object类中的equals方法源代码可以看出:
public boolean equals(Object obj) {
return (this == obj);
}
² J2SDK的一些类,如String,Date等,重写了Object的equals方法,调用这些类的equals方法, x.equals (y) ,当x与y所引用的对象是同一类对象且属性内容相等时(并不一定是相同对象),返回 true 否则返回 false。
String类的equals方法显然是比较数组中的char值是否相等,源代码摘录如下:
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String) anObject;
int n = value.length;
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n– != 0) {
if (v1 != v2)
return false;
i++;
}
return true;
}
}
return false;
}

² 可以根据需要在用户自定义类型中重写equals方法。

重写equals方法实例代码:
package cn.bjsxt.oop.testObject;
public class Mobile {
public String toString(){
return “我是一部移动电话”;
}
}
package cn.bjsxt.oop.testObject;
public class TestObject {
public static void main(String[] args) {
Object obj = new Object();
Object obj2 = new Object();
System.out.println(obj.toString());
System.out.println(obj2.toString());
System.out.println(obj==obj2);
System.out.println(obj.equals(obj2));
String str;
Mobile m = new Mobile();
System.out.println(m.toString());
}
}