java基础之Object类

目录

1:Object类概述

2:构造方法

3:Object类的成员方法

4:例子

(1)不重写Object中toString和 equals的例子

( 2)重写Object中toString和 equals的例子


1:Object类概述

类层次结构的根类

所有类都直接或者间接的继承自该类

是java.lang包下的类不用导包

2:构造方法

public Object()

3:Object类的成员方法

public int hashCode()返回对象的哈希码值,十进制地址值如HashMap提供的那样 

public final Class getClass()返回此Object的运行时类返回的是一个数据类型为Class的值 

public String toString()该toString类方法Object返回一个由其中的对象是一个实例,该符号字符`的类的名称的字符串@ ”和对象的哈希码的无符号的十六进制表示l但是没有任何意义我们要自己重写这个方法得到我们想要的结果

public boolean equals(Object obj)Object类中默认比较的是地址若是需要可以重写方法

Class类中的方法:

public String getName()

返回由类对象表示的实体的名称(类,接口,数组类,原始类型或void),作为String 。

Integer类中提供了一个静态的方法:

public static String toHexString(int i):

返回整数参数的字符串表示形式,作为16位中的无符号整数。

protected void finalize()当垃圾收集确定不再有对该对象的引用时,垃圾收集器在对象上调用该对象。

protected Object clone()创建并返回此对象的副本。返回的是这个实例的一个克隆,被Object类接收

Interface Cloneable使用clone方法必须实现这个接口

但是我们通过观察API发现,该接口没有任何抽象方法,那么实现这个接口有什么意义呢?

如果没有重写该接口就直接调用,会报错CloneNotSupportedException

像这样没有任何方法的接口我们称之为标记接口

4:例子

(1)不重写Object中toString和 equals的例子

package proctice3;
class Student5 extends Object{//定义一个学生类继承Object类

}
public class Text10 {
    public static void main(String[] args) {
        Student5 s1 = new Student5();//创建学生对象
        Student5 s2 = new Student5();//创建学生对象
        //调用Object的hashCode方法
        System.out.println(s1.hashCode());
        //调用Object的getClass方法
        System.out.println(s1.getClass());
        //调用Object的toString方法
        System.out.println(s1.toString());
        //调用Object的equals方法
        System.out.println(s1.equals(s2));



    }
}

( 2)重写Object中toString和 equals的例子

package proctice3;

import java.util.Objects;

class Student5 extends Object{//定义一个学生类继承Object类
  private  int age;
  private String name;

    public Student5() {
    }

    public Student5(int age, String name) {
        this.age = age;
        this.name = name;
    }

    public int getAge() {
        return age;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    //重写Object中的HashCode,toString,equals方法

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student5 student5 = (Student5) o;
        return age == student5.age &&
                Objects.equals(name, student5.name);
    }

    @Override
    public int hashCode() {

        return Objects.hash(age, name);
    }

    @Override
    public String toString() {
        return "Student5{" +
                "age=" + age +
                ", name='" + name + '\'' +
                '}';
    }
}
public class Text10 {
    public static void main(String[] args) {
        Student5 s1 = new Student5(20,"小华");//利用有参构造创建学生对象
        Student5 s2 = new Student5(18,"小亮");//创建学生对象
        //调用Object的hashCode方法
        System.out.println(s1.hashCode());
        //调用Object的getClass方法
        System.out.println(s1.getClass());
        //调用Object的toString方法
        System.out.println(s1.toString());
        //调用Object的equals方法
        System.out.println(s1.equals(s2));



    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值