Object类小总结

1,object类的作用

2,object类的toString(),equals()方法的作用

3,使用object接收引用数据类型

在Java中一切的类都是以继承的关系存在的,如果一个类在定义时,没有明确的指明继承哪个类,则默认继承Object类,Object类是所有类的公共父类。

对象在打印的时候,默认调用toString()方法。

class Demo{ // 定义Demo类,实际上就是继承了Object类
};
public class ObjectDemo01{
    public static void main(String args[]){
        Demo d = new Demo() ;   // 实例化Demo对象
        System.out.println("不加toString()输出:"+d) ;
        System.out.println("加上toString()输出:"+d.toString()) ;
    }
};

这里写图片描述

class Person{
    private String name ;   // 定义name属性
    private int age ;       // 定义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) ;  // 实例化Person
        System.out.println("对象信息:" + per) ;
    }
};

这里写图片描述

equals()方法的主要功能是完成两个对象的比较。

class Person{
    private String name ;   // 定义name属性
    private int age ;       // 定义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
        Person per2 = new Person("李兴华",30) ;     // 实例化Person
        System.out.println(per1.equals(per2)?"是同一个人!" : "不是同一个人!") ;
        System.out.println(per1.equals("hello")?"是同一个人!" : "不是同一个人!") ;

    }
};

Object是所有类的父类,则所有的对象都可以使用Object接收,但是Object不光可以接收对象,还可以接收任意的
引用数据类型(引用数据类型包括,类,接口,数组)。

对象发生向下转型之前一定要发生向上转型,一定要进行instanceof判断,来确保不会发生ClassCastException,提高代码健壮性

1,Object接收接口

interface A{
    public String getInfo();    
}
class B implements A{
    public String getInfo(){    // 覆写方法
        return "Hello World!!!" ;
    }
};
public class ObjectDemo04{
    public static void main(String args[]){
        A a = new B() ; // 向上转型,为接口实例化
        Object obj = a ;    // 使用Object接收,向上转型
        A x = (A)obj ;  // 向下转型
        System.out.println(x.getInfo()) ;
    }
};

这里写图片描述

2,Object接收数组

public class ObjectDemo05{
    public static void main(String args[]){
        int temp[] = {1,3,5,7,9} ;  // 定义数组
        Object obj = temp ; // 使用Object接收数组
        print(obj) ;
    }
    public static void print(Object o){
        if(o instanceof int[]){     // 判断是否是整型数组
            int x[] = (int[])o ;
            for(int i=0;i<x.length;i++){
                System.out.print(x[i] + "\t") ;
            }
        }
    }
};

这里写图片描述

这里写图片描述

总结:

1,对底层要尽可能的多了解一些,知其然还要知其所以然。
2,写代码的时候,有扎实的基本功,深厚的基础为铺垫,就要写出,就能写出健壮性很高的代码。

扎实的基础,提高代码健壮性,适当的注释,提高代码可读性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值