Java类之常用类Object类(待完善)

Java类之常用类Object类

参考网址:https://docs.oracle.com/en/java/javase/20/docs/api/java.base/java/lang/Object.html

一、类所在的位置

在这里插入图片描述

由API文档可知:
Class Object类是在java.lang包下的,且其没有父类

二、看其详细介绍

在这里插入图片描述
由API文档可知:
Object类没有父类,且是修饰符为public的具体类,没有继承任何类。
Object 类是类层次结构的根。每个类都有 Object 作为超类。所有对象(包括数组)都实现此类的方法。

三、看其构造方法

在这里插入图片描述
在这里插入图片描述

由API文档可知:
Object类只有一个构造方法,且是无参构造

四、看方法概述

在这里插入图片描述
由API文档可知:
Object类含有以下方法:

  • clone():访问权限为protected(保护),返回值类型为对象类型(克隆对象是啥类型,返回值就是啥类型)
    方法作用简介:创建并返回此对象的副本。

  • equals(Object obj):访问权限为default(默认),返回值类型为boolean
    方法作用简介:指示某个其他对象是否“等于”此对象。

  • finalize():访问权限为protected(保护),无返回值
    方法作用简介:用于实例被垃圾回收器回收的时触发的操作。
    当 GC (垃圾回收器) 确定不存在对该对象的有更多引用时,对象的垃圾回收器就会调用这个方法 (以弃用,不详细解释)❌

  • getClass():访问权限为default(默认),修饰符为final(其不可被重写)返回值类型为对象的类
    方法作用简介:返回此 Object的运行时类。

  • hashCode():访问权限为default(默认),返回值类型为int
    方法作用简介:返回对象的哈希代码值。

  • notify():访问权限为default(默认),修饰符为final(其不可被重写)无返回值
    方法作用简介:唤醒正在此对象的监视器上等待的单个线程。

  • notifyAll():访问权限为default(默认),修饰符为final(其不可被重写)无返回值
    方法作用简介:唤醒此对象监视器上等待的所有线程。

  • toString():访问权限为default(默认),返回值类型为String
    方法作用简介:返回对象的字符串表示形式。

  • wait():访问权限为default(默认),修饰符为final(其不可被重写)无返回值
    方法作用简介:使当前线程等待,直到它被唤醒,通常是通过通知或中断。

  • wait(long timeoutMillis):访问权限为default(默认),修饰符为final(其不可被重写)无返回值,行参类型为long
    方法作用简介:使当前线程等待,直到它被唤醒(通常是通过通知或中断),或者直到经过一定量的实时时间。

  • wait(long timeoutMillis, int nanos):访问权限为default(默认),修饰符为final(其不可被重写)无返回值,行参类型为long、int
    方法作用简介:使当前线程等待,直到它被唤醒(通常是通过通知或中断),或者某些其他线程中断当前线程,或者直到经过一定量的实时时间。

五、方法详解

1、clone()

protected Object clone()
throws CloneNotSupportedException
格式:需被克隆对象名.clone()

Object clone() 方法用于创建并返回一个对象的拷贝。
clone 方法是浅拷贝,对象内属性引用的对象只会拷贝引用地址,而不会将引用的对象重新分配内存,相对应的深拷贝则会连引用的对象也重新创建。
示例代码:

package clone方法;

class Demo implements Cloneable {
    int a;
    String b;
    public static void main(String[] args) throws CloneNotSupportedException {
        Demo demo1 = new Demo();
        demo1.a=10;
        demo1.b="哈喽";
        System.out.println(demo1.a);//直接打印输出
        Demo demo2 =(Demo) demo1.clone();//先打印克隆体,然后再输出a
        System.out.println(demo2.a);
        System.out.println(((Demo) demo1.clone()).b);//直接打印输出克隆体的b

    }
}

在这里插入图片描述

2、equals(Object obj)

public boolean equals(Object obj)
格式:对象名1.equals(对象类型 对象名2)

Object equals() 指示某个其他对象是否“等于”此对象。
注意:equals比较的是地址值,而 String 类就重写了 equals() 方法,比较的是内容。
示例代码:

package equals方法;

class Demo {
    public static void main(String[] args) {
        Demo demo1= new Demo();
        Demo demo2 = new Demo();
        Demo demo3= demo1;
        System.out.println(demo1.equals(demo2));//虽然demo1与demo2都是空的对象,但是他俩地址值不同
        System.out.println(demo1.equals(demo3));//将demo1的地址值赋给demo3,所以他俩地址值一样
        String s1 = new String();
        String s2 = new String();
        System.out.println(s1.equals(s2));//为啥s1和s2的地址值不一样,但是结果为true,因为String重写了equals方法
        s1="abc";s2="abc";                //让其比较的不再是地址值,二十内容
        System.out.println(s1.equals(s2));
    }
}

在这里插入图片描述

3、getClass()

public final 类<?> getClass()
对象名.getClass()

Object getClass() 方法用于获取对象的运行时对象的类
示例代码:

package getClass方法;

class Demo {
    public static void main(String[] args) {
        Demo demo = new Demo();
        String string=new String();
        Integer integer=new Integer(12);
        System.out.println("demo的类为:"+demo.getClass());
        System.out.println("string的类为:"+string.getClass());
        System.out.println("integer的类为:"+integer.getClass());

    }
}

在这里插入图片描述

4、hashCode()

待完善

5、notify()

待完善

6、notifyAll()

待完善

7、toString()

public String toString()
对象名.toString()

Object toString() 方法用于返回对象的字符串表示形式,返回对象的字符串表示形式。
默认返回格式:对象的 class 名称 + @ + hashCode 的十六进制字符串。
其中:对象路径与包与类名 - 类名;@ - 符号; hashCode 的十六进制字符串 - 哈希值的十六进制值
示例代码:

package toString方法;
class Demo {
    public static void main(String[] args) {
        Demo demo = new Demo();
        Integer integer = new Integer(10);
        String string = new String("哈喽");
        System.out.println(demo.toString());
        System.out.println(integer.toString());
        System.out.println(string.toString());
    }
}

在这里插入图片描述为啥第二个和第三个输出的并不是地址值,那是因为Integer类和String类的重写了toString方法

8、wait()

待完善

9、wait(long timeoutMillis)

待完善

10、wait(long timeoutMillis, int nanos)

待完善

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我头像真的只是只猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值