API——Object类

API

API---Application Programming Interface(提供一系列的接口以及接口下的类)

API里提供的所有方法要么被protected修饰要么就是不写(public)

Object

1.概念

    Object类是java的顶级父类,每个类默认继承Object类。

class A extends B{} class B extends Object{}

没有违背类的单一继承原则

2.重要方法

1.clone():把原对象的熟悉值赋值到新对象中并且把新对象进行返回

类实现Cloneable接口产生对象才能支持克隆操作

public class ObjectDemo implements Cloneable{
    int i=1;
    public static void main(String[] args) throws CloneNotSupportedException {
        //创建对象
        ObjectDemo ob=new ObjectDemo();
        //调用父类Object类里clone方法
        //CloneNotSupportedException--克隆不支持异常
        ObjectDemo ob1=(ObjectDemo) ob.clone();
        //克隆对象属性值和原对象的属性值一致
        //System.out.println(ob1.i);
        //false把原对象的属性值赋值到新对象中
        System.out.println(ob==ob1);
    }
}

2.finalize():通知系统进行垃圾回收

3.getClass():返回的Object的实际创建类的类型(包名+类名)

        //创建对象
        ObjectDemo ob=new ObjectDemo();
        Object ob1=new ObjectDemo();
        //包名+类名
        System.out.println(ob.getClass());
        //Object的实际创建类类型
        System.out.println(ob1.getClass());

4.hashcode():返回对象的哈希码值

哈希码值(1.取值范围广(41亿左右)、2.散列分布(均匀分布)--不会出现重复)

//不同对象的哈希码值不一样

//哈希码值是不会重复---内存地址值要唯一---用哈希码值代表地址值

System.out.println(newObject().hashCode());

//把十进制转成十六进制

System.out.println(Integer.toHexString(newObject().hashCode()));

5.toString():拼接对象地址值

为了获取的是对象的属性值需要重写toString()

public class ObjectDemo3 {
    public static void main(String[] args) {
        //创建对象
        /*ObjectDemo3 od=new ObjectDemo3();
        //od对象传入到底层valueOf()中要去调用Object类里toString()
        //Object类里的toString方法默认给对象来拼接地址值
        System.out.println(od);
        //od对象直接调用Object类里toString()来拼接地址值
        System.out.println(od.toString());*/

        //
        Person p=new Person();
        p.name="豆豆";
        p.age=10;
        p.gender='男';

        //调用Person类重写toString方法来输出对象属性值
        System.out.println(p);
    }
}
//
class Person{
    String name;
    char gender;
    int age;

    //重写Object类里toString方法,为了获取对象的属性值
    //Ctrl+O---展示出可以重写的方法
   /* @Override
    public String toString() {
        return this.name+","+this.gender+","+this.age;
    }*/

    //java自动生成
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", gender=" + gender +
                ", age=" + age +
                '}';
    }
}

6.equals():根据对象地址值来判断对象是否相等

为了更加全面的来判断对象是否相等,根据对象地址值以及对象 属性来综合判断。需要重写equals方法(1.对象地址值2.参数对象是否为null 3.两个对象属性4.比较属性值)

public class Test {
    public static void main(String[] args) {

    }
}
class Teacher{
    //属性
    String name;
    int age;
    char gender;
    String dept;

    //重写equals方法
    public boolean equals(Object obj){
        //1.判断地址值是否相等
        if(this==obj){
            return true;
        }
        //2.判断参数对象是否为null
        if(obj!=null){
            return false;
        }
        //3.判断两个对象类型是否一致
        if(this.getClass()!=obj.getClass()){
            return false;
        }
        //强转
        Teacher t=(Teacher) obj;

        //4.比较属性

        //比较两个对象年龄
        if(this.age!=t.age){
            return false;
        }
        //比较两个对象性别
        if(this.gender!=t.gender){
            return false;
        }
        //比较两个对象的名称是否一致
        if(this.name==t.name||this.name!=null&&this.equals(t.name)){
            return false;
        }

        //比较两个对象部门是否一致
        if(this.dept==t.dept||this.dept!=null&&this.equals(t.dept)){
            return true;
        }
        //
        return false;
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值