【面向对象(高级)】_Object类笔记

时间:2022-08-01 17:23:32
【面向对象(高级)】_Object类笔记

掌握Object类的作用
掌握Object类中toString(),equals()方法的作用
掌握Object接受引用数据类型的操作

在java中所有类都有一个公共的父类就是Object类,一个类只要没有明确的继承一个类,则肯定是Object类的子类,如下面两行代码表示含义都是一样的:
class Person extends Ojbect{}
class Person{}

Object类中的主要方法:
方法名称                类型    描述
public Object                构造    构造方法
public boolean equals(Object obj)    普通    对象比较
public int hashCode()            普通    取得Hash码
public String toString()        普通    对象打印时调用


实例一:
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());
}
}



实例二:
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(String args[]){
Person per = new Person("牛人",30);
System.out.println("对象信息:"+per);
}
}


打印对象信息

equals()方法
equals()方法的主要功能是进行对象的比较操作。
String本身也是Object类的子类,所以已经覆写了此方法。

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){
if(this==obj){
return true;
}
if(!(obj instanceof Person)){//不是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(){
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));
}
}



对象比较步骤:
1.是否直接相等this==obj;
2.是否是父类的实例使用instanceof判断。
3.先向下转型然后通过对象字段进行验证。

数组实际上也可以使用Object进行接收

public class ObjectDemo05{
public static void main(String args[]){
int temp[] = {1,3,5,7,9};
Object obj = temp;
print(obj);
}
public static void print(Object obj){
if(obj instanceof int[]){
int x[] = (int[])obj;
for(int i=0;i<x.length;i++){
System.out.println(x[i]);
}
}
}
}




总结:
1.Object类是所有类的父类,只要是引用数据类型都可以使用Object进行接收
2.对象在进行向下转型之前一定要先发生向上转型,要使用instanceof关键字判断
3.toString(),对象打印时调用
4.equals():对象比较时调用。
5.String类也是Object的子类。