java学习笔记

1)子类的构造方法总是先调用父类的构造方法,如果子类没有显式的指明调用父类的哪一个方法,子类就会调用父类的无参数构造方法。如果在这时父类并没有无参数构造方法就会报错。显式super();
2)类成员访问权限,

类型范围
public随意访问
protect子类(同不同包都可以)
fiendly(默认)同一包
private本类

3)sleep和wait的学习
java的多线程是抢占式的机制,而不是分时, 在抢占的机制下会有多个线程处于可运行的状态,但是只有一个线程运行
共同点:

  1. 都在多线程的环境下,都可以在程序的调用处阻塞指定的毫秒数,并且返回。
  2. wait()和sleep都可以使用interrupt打断线程的暂停状态,从而使线程立刻抛出interruptedException
    例如,线程B如果想立刻停止A,则可以对线程A对应的thread实例调用intertupt。如果A处于sleep,wait join则A会立刻抛出异常,在catch处return即可结束
    需要注意的是,InterruptedException是线程自己从内部抛出的,并不是interrupt()方法抛出的。对某一线程调用 interrupt()时,如果该线程正在执行普通的代码,那么该线程根本就不会抛出InterruptedException。但是,一旦该线程进入到 wait()/sleep()/join()后,就会立刻抛出InterruptedException 。

不同点:

  1. 每个对象都有一个锁来控制同步访问,synchronized关键字可以和对象的锁交互,来实现线程的同步
    sleep没有释放锁,而wait方法释放了,使得其他的线程可以使用同步控制块或者方法

  2. wait、notify和notifyall只能在同步控制方法或者同步控制块厘米昂hi用,但是sleep可以在任何地方使用

  3. sleep必须捕获异常,而wait.notify,notifyall不需要捕获异常
  4. sleep线程类thread的方法,导致此线程暂停执行指定时间,让出执行机会给别的线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁
  5. wait是obj的方法,对此对象调用wait导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象打出notify方法后本线程才进入对象锁定池准备获得对象锁进入运行状态。


    4)集合框架中的线程安全类
    vector:比arraylist多一个同步化机制,但是效率低,不建议使用
    statck:堆栈类,先进后出
    hashtable:比hashmap多一个线程安全
    enumeration:枚举,相当于迭代器
    除了这些之外,其他的都是非线程安全的类和接口。


5)代码的执行顺序
静态块>main()>构造块>构造方法
静态块:用static申明,JVM加载类时执行,仅执行一次
构造块:类中直接用{}定义,每一次创建对象时执行
类似这里


 public class B
{
    public static B t1 = new B();
    public static B t2 = new B();
    {
        System.out.println("构造块");
    }
    static
    {
        System.out.println("静态块");
    }
    public static void main(String[] args)
    {
        B t = new B();
    }
}

输出的结果是:构造块 构造块 静态块 构造块


6)接口和抽象类在方法上的区别

元素接口抽象类
普通方法不可可以包含
非抽象普通方法必须抽象可以
普通成员变量不可可以
静态方法不可可以
静态成员变量访问类型是public static final可以

7)final修饰的后果

元素后果
方法不允许被子类覆盖
不能被继承
变量不能改变值
引用类型不能再指向别的东西,但是可以改变其中的内容
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值