java知识点

JAVA的基础知识:数据结构(Map / List / Set等)、设计模式、算法、线程相关、IO/NIO、序列化等等。其次是高级特征:反射机制,并发与锁,JVM(GC策略,类加载机制,内存模型)等等。
如果你知道Java不支持类的多重继承,但允许你调用多个接口。所以如果你要继承其他类,当然是调用Runnable接口好了。
用Thread类的join方法实现线程排序运行。当你调用 start() 方法时,它会新建一个线程然后执行 run() 方法中的代码。如果直接调用 run() 方法,并不会创建新线程,方法中的代码会在当前调用者的线程中执行。
. 什么是多态?
多态简单地说“一个接口,多种实现”。多态的出现使得在不同的场合同一个接口能够提供不同功能,具体地说可以让变量、函数或者对象能够提供多种功能。下面是多态的两种类型:编译时多态,运行时多态
编译时多态主要是对方法进行重载(overload),而运行时多态主要通过使用继承或者实现接口。
Object 类包含哪些方法?
这是一个非常常见的问题,用来确定你对基础知识的熟悉程度。以下是每个对象都具有的方法:
在java.lang 包中,Object 类位于类层次结构的顶端。每个类都是Object 类直接或间接的子类。你使用或编写的每个类都继承了Object 类中的实例方法。你并不需要使用这些方法中的任何一种,但是,如果你选择这样做,则可能需要用你的类的特定代码来重写这些方法。以下是本节所讨论的从Object 类中继承的方法:
protected Object clone() throws CloneNotSupportedException 创建并返回此对象的副本。
public boolean equals(Object obj) 判断另一对象与此对象是否「相等」。
protected void finalize() throws Throwable 当垃圾回收机制确定该对象不再被调用时,垃圾回收器会调用此方法。
public final Class getClass() 返回此对象的运行时类。
public int hashCode() 返回此对象的散列码值。
public String toString() 返回此对象的字符串表示形式。
Object 类的notify,notifyAll 和wait 方法都在同步程序中独立运行线程的活动方面发挥了作用,这将在后面的课程中讨论,在此不做介绍。其中有五种方法:
public final void notify()
public final void notifyAll()
public final void wait()
public final void wait(long timeout)
public final void wait(long timeout, int nanos)
字符串是隐式线程安全的。由于String是不可变的,因此在它被创建时其散列码就被缓存,不需要再次计算。这使得它成为映射中键的理想对象,它的处理速度比其他HashMap键类型快。这就是为什么String是HashMap中最常用的键类型。
菱形继承问题:为什么要禁止多重继承?
7. String、StringBuffer、StringBuilder的区别?
答案:有以下区别:
String 是不可变的,StringBuffer、StringBuilder 是可变的;
String 、StringBuffer 是线程安全的,StringBuilder 不是线程安全的。
【java知识点】StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。

    推荐阅读