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)
待完善
1336

被折叠的 条评论
为什么被折叠?



