【JavaSE】Java入门八(Object类详解)

object类

       Java中Object类是所有类的父类,可以理解为他是最抽象的一个类型,就像混沌,Java所有类型都继承自它,所有对象(包括数组)都实现这个类的方法。非常重要,下面我来根据JDK官方文档来带大家学习一下这个类的所有方法。

 下面是JDK1.6中的object方法摘要,一共有11种方法。本篇文章会详细介绍这11种方法该如何去使用。【JavaSE】Java入门八(Object类详解)_第1张图片

1. toString()方法

object类中的toString方法实现:

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

该方法的主要作用是打印对象的内容,我们在使用中一般通过在继承类中重写该方法来自定义实现对具体对象的打印

2.equals()方法

该方法的作用是比较对象内容

Java 中, == 进行比较时:
a. 如果 == 左右两侧是基本类型变量,比较的是变量中值是否相同
b. 如果 == 左右两侧是引用类型变量,比较的是引用变量地址是否相同
如果要比较对象中内容,必须重写 Object中的equals方法。

3.hashcode()方法

该方法用于计算对象的哈希值,源码如下:

 public native int hashCode();

这是一个native方法,底层代码是用C/C++实现的。

  • 如果两个对象的equals的结果是相等的,则两个对象的 hashCode 的返回结果也必须是相同的。
  • 任何时候重写equals,都必须同时重写hashCode

该方法一般在具有哈希功能的Collection中使用。

4.clone()方法

该方法负责把A对象的属性值完全拷贝给B对象,也叫对象拷贝,对象复制(浅拷贝)。

只有实现Cloneable接口的类才能使用clone()方法,而且使用前需要重写。

@override
protected Object clone() throws CloneNotSupportedException{
//调用父类中的clone方法
//相当于让Java帮我们克隆一个对象,并把克隆之后的对象返回出去。
return super.clone();

Cloneable接口:内部没有抽象方法,表示当前的接口是一个标记性接口。

5.getClass()方法

   final方法,在反射中使用,用已返回Class类型的对象。

6.wait()方法

使线程进入等待状态,直到以下事件发生:

  1. 其他线程调用了该对象的notify方法。
  2. 其他线程调用了该对象的notifyAll方法。
  3. 其他线程调用了interrupt中断该线程。

7.wait(long timeout)方法

使线程进入等待状态,直到以下事件发生:

  1. 其他线程调用了该对象的notify方法。
  2. 其他线程调用了该对象的notifyAll方法。
  3. 其他线程调用了interrupt中断该线程。
  4. 超过指定的时间量。

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

用法同上,这里的

timeout - 要等待的最长时间(以毫秒为单位)。

nanos - 额外时间(以毫微秒为单位,范围是 0-999999)。

9.notify()方法

该方法用来唤醒在该对象上等待的某个线程。选择是任意性的。

10.notifyAll()方法

该方法用来唤醒在该对象上等待的所有线程。

11.finalize()方法

当JVM的垃圾回收器确定不存在该对象的更多引用时,由垃圾回收器调用此方法

因为不确定该方法什么时候被调用,很少使用。

你可能感兴趣的:(java,开发语言)