Java中Object类常用的11个方法

news/2024/11/16 10:25:07/

Java中Object类常用的11个方法

先看下 Object 的类结构(快捷键:alt+7):
在这里插入图片描述

1. getClass 方法(获取类的class对象。)

public final native Class<?> getClass();

final 方法、获取对象的运行时 class 对象,class 对象就是描述对象所属类的对象。这个方法通常是和 Java 反射机制搭配使用的。

2. hashCode 方法(获取类的class对象。)

public native int hashCode();

该方法主要用于获取对象的散列值。Object 中该方法默认返回的是对象的堆内存地址。

3. equals 方法(比较对象是否相等,比较的是值和地址,子类可重写以自定义)

public boolean equals(Object obj) { return (this == obj);}

该方法用于比较两个对象,如果这两个对象引用指向的是同一个对象,那么返回 true,否则返回 false。一般 equals 和 == 是不一样的,但是在 Object 中两者是一样的。子类一般都要重写这个方法。

4. clone 方法(克隆方法。)

protected native Object clone() throws CloneNotSupportedException;

该方法是保护方法,实现对象的浅复制,只有实现了 Cloneable 接口才可以调用该方法,否则抛出 CloneNotSupportedException 异常。

默认的 clone 方法是浅拷贝。所谓浅拷贝,指的是对象内属性引用的对象只会拷贝引用地址,而不会将引用的对象重新分配内存。深拷贝则是会连引用的对象也重新创建。

5. toString 方法(如果没有重写,应用对象将打印的是地址值)

public String toString() {return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

返回一个 String 对象,一般子类都有覆盖。默认返回格式如下:对象的 class 名称 + @ + hashCode 的十六进制字符串。

6. notify 方法(随机选择一个在该对象上调用wait方法的线程,解除其阻塞状态。该方法只能在同步方法或同步块内部调用。如果当前线程不是锁的持有者,该方法抛出一个IllegalMonitorStateException异常)

public final native void notify();

final 方法,主要用于唤醒在该对象上等待的某个线程。

7. notifyAll 方法(解除所有那些在该对象上调用wait方法的线程的阻塞状态。该方法只能在同步方法或同步块内部调用。如果当前线程不是锁的持有者,该方法抛出一个IllegalMonitorStateException异常)

public final native void notifyAll();

final 方法,主要用于唤醒在该对象上等待的所有线程。

8. wait(long timeout) 方法

public final native void wait(long timeout) throws InterruptedException;

wait 方法就是使当前线程等待该对象的锁,当前线程必须是该对象的拥有者,也就是具有该对象的锁。wait() 方法一直等待,直到获得锁或者被中断。wait(long timeout) 设定一个超时间隔,如果在规定时间内没有获得锁就返回。

9. wait(long timeout, int nanos) 方法

public final void wait(long timeout, int nanos) throws InterruptedException {if (timeout < 0) {throw new IllegalArgumentException("timeout value is negative");}if (nanos < 0 || nanos > 999999) {throw new IllegalArgumentException("nanosecond timeout value out of range");}if (nanos >= 500000 || (nanos != 0 && timeout == 0)) {timeout++;}wait(timeout);
}

参数说明

timeout:最大等待时间(毫秒)

nanos:附加时间在毫秒范围(0-999999)

该方法导致当前线程等待,直到其他线程调用此对象的 notify() 方法或notifyAll()方法,或在指定已经过去的时间。此方法类似于 wait 方法的一个参数,但它允许更好地控制的时间等待一个通知放弃之前的量。实时量,以毫微秒计算,计算公式如下:

1000000 * timeout + nanos

在所有其他方面,这种方法与 wait(long timeout) 做同样的事情。特别是 wait(0, 0) 表示和 wait(0) 相同。

10. wait 方法((导致线程进入等待状态,直到它被其他线程通过notify()或者notifyAll唤醒。该方法只能在同步方法中调用。如果当前线程不是锁的持有者,该方法抛出一个IllegalMonitorStateException异常))

public final void wait() throws InterruptedException { wait(0);}

可以看到 wait() 方法实际上调用的是 wait(long timeout) 方法,只不过 timeout 为 0,即不等待。

11. finalize 方法(对象回收时调用)

protected void finalize() throws Throwable { }

该方法是保护方法,主要用于在 GC 的时候再次被调用,如果我们实现了这个方法,对象可能在这个方法中再次复活,从而避免被 GC 回收。


http://www.ppmy.cn/news/244185.html

相关文章

速度无敌

无奈blogspot总是受到长城的关心&#xff0c;无法安心写东西。要么写不了&#xff0c;要么看不到&#xff0c;无奈无语。 还要重拾cnblogs的博客&#xff0c;混杂在各位技术员里面的博客感觉还是很好地&#xff0c;在下在这里滥竽充数一下。忘各位程序员大大不要计较我这个普通…

各大品牌配件在厦门电子城的代理商汇总

发信人: MuRong (←┄┄熊猫少爷┄┄→), 信区: ITMarket标 题: 各大品牌配件在厦门电子城的代理商汇总发信站: 鼓浪听涛 (2004年11月29日17:45:06 星期一), 站内信件 主要内容来自tyy站友以前的整理。 各大品牌配件在厦门电子城的代理商汇总 CPU&#xff1a;Intel创捷、百…

0615

“同”表示完全相同的产品。产品后的数字是价钱。AMD的CPU只能配AMD的主板&#xff0c;INTEL亦然。在最后&#xff0c;给出了一5500元的液晶家用配置 -----------------CPUINTEL Celeron D 2.4&#xff08;散装&#xff09; /560AMD Sempron 2600&#xff08;754盒装&#xff0…

配电脑

中关村的装配&#xff08;超好&#xff09;&#xff1a; http://diy.zol.com.cn/ 配电脑技巧&#xff1a; http://club.gz163.cn/viewthread.php?tid94408&extrapage%3D2 中关村配件价格查询&#xff1a; http://detail.zol.com.cn/price_search.php?navi_id0 配电脑论坛…

Mac OSX x86 10.4.6 安装小记(1)

最近成功地安装了 Mac OSX x86 10.4.6&#xff0c;因为安装失败的例子比较多。故将这次安装过程记录如下&#xff0c;供大家参考。 先讲一下本机配置&#xff1a; CPU: 32位赛扬320 2.4G 主板: QDI P4I865PE Novo-6AL 内存: Kingmax 256MB DDR X 4 硬盘: 日立 80G ATA …

主流主板生产厂商全面剖析 电脑配件优劣及真正产地

<script languagejavascript srchttp://www.taizhou.la/AD/ad.js></script> 深度分析产品定位 主流主板生产厂商全面剖析 PC online 很多消费者在选购主板时&#xff0c;一定会发现采用同样芯片组的不同品牌的主板价格会相差很多&#xff0c;比如同是975X芯片组的主…

最新需要电脑配置单!

配置品牌型号数量单价选用 *CPU Intel 奔腾双核 E2180&#xff08;盒&#xff09;1&#xffe5; 455 *主板 微星 945 Neo5-F1&#xffe5; 449 *内存 金士顿 2GB DDR2 8001234&#xffe5; 210 *硬盘 希捷 250G 7200.10 8M&#xff08;串口/5年盒&#xff09;1234&#xffe…

配置

发信人: fireflylwb (电容改造0413恋斯一生), 信区: PC_Market标 题: 近期装机推荐完全版 (2007.01.18)发信站: 日月光华 (2006年10月09日19:38:37 星期一), 站内信件 近期装机推荐fireflylwb07.01.18 终于有迎来了新一轮的装机推荐更新了&#xff0c;经过conroe的成功…