1.Object类有哪些方法

  1》clone()方法

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

  2》getClass()方法

final方法,获得运行时类型。

  3》toString()方法

常用方法,一般子类都会覆盖

  4》finalize()方法

该方法用于释放资源。因为无法确定该方法什么时候被调用,很少使用。

  5》equals()方法

该方法是非常重要的一个方法。一般equals和==是不一样的,但是在Object中两者是一样的。子类一般都要重写这个方法。

  6》hashCode()方法

该方法用于哈希查找,重写了equals方法一般都要重写hashCode方法。这个方法在一些具有哈希功能的Collection中用到。

一般必须满足obj1.equals(obj2)==true。可以推出obj1.hash- Code()==obj2.hashCode(),但是hashCode相等不一定就满足equals。不过为了提高效率,应该尽量使上面两个条件接近等价。

   7》wait()方法

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

调用该方法后当前线程进入睡眠状态,直到以下事件发生。

(1)其他线程调用了该对象的notify方法。

(2)其他线程调用了该对象的notifyAll方法。

(3)其他线程调用了interrupt中断该线程。

(4)时间间隔到了。

此时该线程就可以被调度了,如果是被中断的话就抛出一个InterruptedException异常。

  8》notify()方法

该方法唤醒在该对象上等待的某个线程

  9》notifyAll()方法

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

===============================================================

2.==和equals()方法的区别

  1》Object中的equals()方法就是做==

  2》String中重写了equals()方法,在==比较之后还做了值的比较。

    ==比较地址是否相等

    equals先比较地址是否相等,若不相等,再比较值是否相等。

  3》上面说的==和equals()是在引用数据类型来说,在基本数据类型上 只有==比较,值是否相等。基本数据类型没有用equals()方法的比较。

===============================================================

3.clone()方法引申出来的克隆,关于深克隆和浅克隆的区别

  1》浅克隆概念:仅克隆原对象的值给新的对象,原对象中如果有属性为对象,则仅克隆此属性的引用地址给新对象。即原对象和新对象对于一个属性对象是同一个引用地址。

  2》深克隆概念:不仅克隆原对象的值给新对象,也会将原对象中对象属性重新开辟空间给新对象。

【面试 JDK】【第一篇】Object类面试详解

 

【面试 JDK】【第一篇】Object类面试详解

相关代码:

package com.sxd.test2;


import lombok.AllArgsConstructor;
import lombok.Data;

@Data
@AllArgsConstructor
public class Teacher {

    private int id;
    private String name;
}
View Code

相关文章:

  • 2021-05-06
  • 2021-12-26
  • 2021-10-20
  • 2021-06-26
  • 2022-12-23
  • 2021-07-15
  • 2021-07-27
猜你喜欢
  • 2022-02-06
  • 2021-07-11
  • 2022-01-19
  • 2021-05-30
  • 2021-08-21
  • 2021-10-30
  • 2022-01-19
相关资源
相似解决方案