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") ? "是同一个人" : "不是同一个人");
}
}
结果:
是同一个人!
不是同一个人
浙公网安备 33010602011771号