Object类型

本文详细介绍了Java中Object类的基本概念及其核心方法的使用,包括构造方法、toString()、equals()、hashCode()和finalize()方法。通过具体示例展示了如何重写这些方法以满足特定需求。

1、Object介绍
在这里插入图片描述
2、Object构造方法
在这里插入图片描述
3、功能方法
在这里插入图片描述

import java.util.Objects;

class Person {
    private int age;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person{" +
                "age=" + age +
                '}';
    }

    //    @Override
//    public String toString() {
//        String s = "age = " + age;
//        return s;
//    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Person person = (Person) o;
        return age == person.age;
    }

    //如果同龄人,生成对象的地址也要相同
    @Override
    public int hashCode() {
        return Objects.hash(age);
    }

    //    //判断是否是同龄人
//    @Override
//    public boolean equals(Object obj) {
//        //1、判断比较是否是人
//        if (!(obj instanceof Person)) {
//            return false;
//        }
//        Person p = (Person) obj;//小红
//        //2、判断年龄
//        return this.age == p.age;
//    }


    @Override
    protected void finalize() throws Throwable {
        System.out.println("Person finalize()...");
    }
}


public class Demo2_Object {

    public static void main(String[] args) {
        //finalize() 当对象成为垃圾空间,被回收时会执行该方法。
        Person p = new Person();
        p = null;
        System.gc();//启动垃圾回收器 Person finalize()...
        System.out.println("程序结束");


        //method_toString();


        //method_equals();

        //method_hashCode();

        //method_构造方法();
    }

    private static void method_toString() {
        //toString()
        Object obj = new Object();
        System.out.println(obj.toString());//java.lang.Object@610455d6

        //需求:看对象的属性值
        Person p = new Person();
        p.setAge(18);
        System.out.println(p.toString());//Person{age=18}
    }

    private static void method_equals() {
        //需求:判断是否是同龄人。
        //分析:人{age,判断是否是同龄人()}
        Person p = new Person();
        p.setAge(18);
        Person p2 = new Person();
        p2.setAge(18);
        System.out.println(p.equals(p2));

        //.equals(Object obj)
        Object obj = new Object();
        Object obj2 = new Object();
        boolean b = obj.equals(obj2);
        //==是二元算术运算符,左右两边是基本数据类型,判断是值是否相等。
        //如果左右两边是引用数据类型,判断是地址是否相等。
        //问题:为什么Object需要定义equals方法?
        //答案:方法可以被重写,==不能被重写。
        boolean b2 = obj == obj2;
        System.out.println(b);//false
        System.out.println(b2);//false
    }

    private static void method_hashCode() {
        //hashCode方法 返回十进制的对象地址。
        Object obj = new Object();
        int i = obj.hashCode();
        System.out.println(i);//1627674070
        //toHexString(int) 将10进制的数据转换成16进制
        System.out.println(Intger.toHexString(i));//610455d6
    }

    private static void method_构造方法() {
        //Object()
        Object obj = new Object();
        System.out.println(obj);//java.lang.Object@610455d6
    }
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值