浅谈Object类

Object所有类的超类,所有类在创建对象是都可以用object类引用任何类型的对象

Object a = new Text();

在Object中一共有八种方法,接下来就跟着我一起看一下object中的这几种方法分别是什么,都可以干些什么。

1、clone()方法

protected Object clone() throws CloneNotSupportedException

作用:创建一个副本,简单来说就是为了克隆一个对象来使用,复制之后两者将不是同一个对象,并不是简单的地址指引,而是重新创建一个对象使用,有两种情况,一种是浅拷贝,当拷贝的对象是内存地址时,被拷贝的地址发生变化时,会对拷贝的数据发生影响。

另一种是深拷贝,深拷贝之后就相当于重新创建了同样的新的兑现,不管被克隆的数据怎么改变也不会影响到拷贝的结果。

当使用此方法是必须实现Cloneable接口,否则会抛出异常CloneNotSupportedException。

2、equals()方法

a.equals(b);

作用:进行对象之间的比较。当a的内容等于b时,返回值为true,否则返回false.

equals方法比较的实现方式,首先对比数据的地址是否相同,相同时返回true,不相同时进行下一步比较,首先判断是否为空,然后判断长度是否相同,最后进行内容的对比,满足的返回true,不满足则返回false。

3、getClass()方法

返回此 Object的运行时类。返回的 Class对象是由所表示类的 static synchronized 方法锁定的对象。

实际结果类型是 Class<? extends |X|>,其中 |X| 表示清除表达式中的静态类型,该表达式调用 getClass

例如,以下代码片段中不需要强制转换:

Number n = 0; 
Class<? extends Number> c = n.getClass();

4、toString()方法

Object类的toSting方法返回一个字符串

该字符串由类名标记符“@”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于: getClass().getName() + '@' + Integer.toHexString(hashCode())

所以一般在子类中实现事都会重写toString()方法,让其返回值为字符串,这样的显示会更加直白易懂。

public class Student {
	String name;
	int nums;
	String sex;

	@Override
	public String toString() {
		return "Student [name=" + name + ", nums=" + nums + ", sex=" + sex + "]";
	}
}

5、 finalize() 方法

在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。

6、notify()、notifyAll()都是唤醒线程的方法

作用:notify(),唤醒在此对象监视器上等待的单个线程。如果所有线程都在此对象上等待,则会选择唤醒其中一个线程。选择是任意性的,并在对实现做出决定时发生。线程通过调用其中一个 wait 方法,在对象的监视器上等待

 notifyAll()唤醒在此对象监视器上等待的所有线程。线程通过调用其中一个 wait 方法,在对象的监视器上等待。

7、hashCode()方法

返回该对象的哈希码值。支持此方法是为了提高哈希表的性能。

由 Object 类定义的 hashCode 方法确实会针对不同的对象返回不同的整数。(这一般是通过将该对象的内部地址转换成一个整数来实现的,但是 JavaTM 编程语言不需要这种实现技巧。)

8、wait()、wait(long timeout)、wait(long timeout, int nanos)

三个方法都是object中的方法,只是需要传递的参数不同,让线程进行等待。

wait():在其他线程调用此对象的 notify()方法或 notifyAll()方法前,导致当前线程等待

wait(long timeout):在其他线程调用此对象的 notify() 方法或notifyAll() 方法,或者超过指定的时间量前,导致当前线程等待

wait(long timeout, int nanos):在其他线程调用此对象的notify()方法或notifyAll() 方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量前,导致当前线程等待。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值