Object类

1.基本作用

 在java中所有的类都有一个公共的父类Object,一个类只要没有显示地继承一个类,则肯定是Object类的子类。

class person extends Object{}

class Person

两者等效,Object类中提供了很多的方法

Object类中的主要方法:

1.    public Object()                                  构造     构造方法

2.    public  boolean  equals(Object obj)     普通     对象比较

3.    public  int hashCode()                           普通      取得hash码

4.   public   String  toString()                        普通     对象打印时调用

以上列出Object类中比较常用的几个方法

对于一个设计良好的类来说,最好覆写Object类中的equals、hashCode、toString三个方法

先看一段代码

package test1;

class Demo {

}

public class ObjectDemo01 {
	public static void main(String[] args) {
		Demo d = new Demo();
		System.out.println("不加toString()输出:" + d);
		System.out.println("加上toString()输出:" + d.toString());
	}
}

  结果:

不加toString()输出:test1.Demo@c17164
加上toString()输出:test1.Demo@c17164

从程序的运行结果可以清楚的发现,加与不佳结果是一样的,也就是说对象输出时一定会调用Object类中的toString()方法打印内容

package test1;

class Person {
	private String name;
	private int age;

	public Person(String name, int age) {
		this.name = name;
		this.age = age;
	}

	public String toString() {
		return "姓名:" + this.name + ":年龄:" + this.age;
	}
}

public class ObjectDemo02 {
	public static void main() {
		Person per = new Person("张三", 30);
		System.out.println("对象信息:" + per);
	}
}

  结果:对象信息:姓名:张三 年龄:30

 

package test1;

class Person {
	private String name;
	private int age;

	public Person(String name, int age) {
		this.name = name;
		this.age = age; // 通过构造方法为封装的属性赋值
	}

	public boolean equals(Object obj) {// 覆写Object类中的equals()方法
		if (this == obj) { // 如果两个对象的地址相等,则肯是同一个对象
			return true;
		}
		if (!(obj instanceof Person)) {
			return false;
		}
		Person per = (Person) obj;// 将传进来的对象向下转型
		if (per.name.equals(this.name) && per.age == this.age) {// 逐个属性比较,看是否相等
			return true;
		} else {
			return false;
		}
	}

	public String toString() {// 覆写toSring方法
		return "姓名:" + this.name + ":年龄:" + this.age;
	}
}

public class ObjectDemo03 {
	public static void main(String[] args) {
		Person per1 = new Person("张三", 30);
		Person per2 = new Person("张三", 30);
		System.out.println(per1.equals(per2) ? "是同一个人!" : "不是同一个人!");
		System.out.println(per1.equals("hello") ? "是同一个人" : "不是同一个人");
	}
}

  结果:

是同一个人!
不是同一个人

 

posted on 2011-12-07 14:29  wangbokun  阅读(184)  评论(0编辑  收藏  举报

导航