明天说一道根底题型,不过很多人会疏忽或者至多说不残缺,然而面试时被问到的几率还是很大的。

面试题

Object有几种办法呢?

Java语言是一种单继承构造语言,Java中所有的类都有一个独特的先人。这个先人就是Object类。

如果一个类没有用extends明确指出继承于某个类,那么它默认继承Object类。

Object的办法咱们在平时根本都会用到,但如果没有筹备被突然这么一问,还是有点懵圈的。

剖析

Object类是Java中所有类的基类。位于java.lang包中,一共有13个办法。如下图:
在这里插入图片形容
具体解答

1.Object()
这个没什么可说的,Object类的构造方法。(非重点)

2.registerNatives()
为了使JVM发现本机性能,他们被肯定的形式命名。例如,对于java.lang.Object.registerNatives,对应的C函数命名为Java_java_lang_Object_registerNatives。

通过应用registerNatives(或者更确切地说,JNI函数RegisterNatives),能够命名任何你想要你的C函数。(非重点)

3.clone()
clone()函数的用处是用来另存一个以后存在的对象。只有实现了Cloneable接口才能够调用该办法,否则抛出CloneNotSupportedException异样。(留神:答复这里时可能会引出设计模式的发问)

4.getClass()
final办法,用于取得运行时的类型。该办法返回的是此Object对象的类对象/运行时类对象Class。成果与Object.class雷同。(留神:答复这里时可能会引出类加载,反射等知识点的发问)

5.equals()
equals用来比拟两个对象的内容是否相等。默认状况下(继承自Object类),equals和是一样的,除非被覆写(override)了。(留神:这里可能引出更常问的“equals与的区别”及hashmap实现原理的发问)

6.hashCode()
该办法用来返回其所在对象的物理地址(哈希码值),常会和equals办法同时重写,确保相等的两个对象领有相等的hashCode。(同样,可能引出hashmap实现原理的发问)

7.toString()
toString()办法返回该对象的字符串示意,这个办法没什么可说的。

8.wait()
导致以后的线程期待,直到其余线程调用此对象的 notify() 办法或 notifyAll() 办法。(引出线程通信及“wait和sleep的区别”的发问)

9.wait(long timeout)
导致以后的线程期待,直到其余线程调用此对象的 notify() 办法或 notifyAll() 办法,或者超过指定的工夫量。(引出线程通信及“wait和sleep的区别”的发问)

10.wait(long timeout, int nanos)
导致以后的线程期待,直到其余线程调用此对象的 notify() 办法或 notifyAll() 办法,或者其余某个线程中断以后线程,或者已超过某个理论工夫量。(引出线程通信及“wait和sleep的区别”的发问)

11.notify()
唤醒在此对象监视器上期待的单个线程。(引出线程通信的发问)

12.notifyAll()
唤醒在此对象监视器上期待的所有线程。(引出线程通信的发问)

13.finalize()
当垃圾回收器确定不存在对该对象的更多援用时,由对象的垃圾回收器调用此办法。(非重点,但小心引出垃圾回收的发问)

引申常见问题

equals() 与 == 的区别是什么?

hashCode() 和 equals() 之间有什么分割?

wait()办法与sleep()办法的区别

为什么重写了equals就必须重写hashCode

HashMap的实现原理

谈谈类加载机制

后续咱们就这些常见问题一一做一些解答,当然,可能大部分人对这类问了八百遍的问题曾经滚瓜烂熟了。