JavaSE基础--集合,多线程

sleep与wait

sleep():

class Thread implements Runnable {

	public static native void sleep(long millis) throws InterruptedException;
}

wait ():

public class Object {

    public final void wait() throws InterruptedException {
        wait(0);
    }
    public final native void wait(long timeout) throws InterruptedException;

}

sleep()是线程类(Thread)里面的方法,而wait()是Object里面的方法

sleep()让线程进入阻塞状态,并主动让出cpu,但是不会释放锁。

wait()让线程进入等待池,即中断线程的运行(中断恢复后会回到原来的wait()方法的位置,还是会获取锁的位置),让出CPU,还会释放锁

JavaSE基础--集合,多线程_第1张图片

静态成员变量

JavaSE基础--集合,多线程_第2张图片

子类继承了父类的所有属性和方法或子类拥有父类的所有属性和方法是对的,只不过父类的私有属性和方法,子类是无法直接访到的。即只是拥有,但是无法使用。 

abstract

抽象方法没有方法主体

抽象方法不能用private修饰因为抽象方法必须被子类实现,而private权限对于子类来 说是不能访问的,所以就会产生矛盾

抽象方法也不能用static修饰,因为用static修饰后就能直接调用抽象方法了,但是抽象方法没有方法主体,调用也没有任何意义,所以不能用static修饰

抽象类不能被实例化,因为抽象类本身就是代表着一种类型,而不是一个具体的对象,只有抽象类的继承类可以实例化

但是抽象类有自己的构造方法?

抽象类与接口(interface)有很大的不同之处,接口中不能有实例方法去实现业务逻辑,而抽象类 中可以有实例方法,并实现业务逻辑。

 抽象类不能用final关键字修饰,因为被final修饰的类无法被继承。

抽象类与抽象方法

一个类,只要有至少一个抽象方法,那这个类就一定是抽象类,

但是一个抽象类不一定含有抽象方法,有的抽象类不含有抽象方法,这样做的目的是为了让这个抽象类不能被实例化

一个类,继承了抽象类,那么它必须覆写抽象类中的所有抽象方法,其实也可以不覆写全部的抽象方法,但是这样的话这个子类也要是抽象类了,这样就没什么意义了

抽象类与接口

抽象类可以有构造方法,接口中不能有构造方法

抽象类中可以有普通成员变量,接口中没有普通成员变量

两个数组用equals方法比较时,会比较地址,不是同一个数据就会返回false

要用Array.equal进行比较,才会逐个便利其中的元素,对每个元素进行比较.
 

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