初识Java(部分笔记摘写)
1. 局部和成员变量
成员变量在类中(有初始化值),局部变量在函数里(无初始化值)。前者当对象出现时、出现在堆内存中,且生命周期随对象出现而出现、消失而消失。后者运算时出现在栈内存中,所属区间运算完就被释放。
2.标识本类用this关键字(本类关键字的引用),标记父类用super关键字(父类关键字的引用)
3. 继承覆盖时(override)覆盖方法权限要大于父的权限,静态方法覆盖时,只能被静态覆盖。继承中都有一个隐式的super()
4. 子类构造函数会默认访问父类构造函数
5. 抽象类是父类,有构造函数,给子类提供初始化动作的,可以不定义抽象方法,抽象关键字不能和final,private,static
6.接口中变量和常量都有固定修饰符,变量函数(public
abstract)和常量(public static final),一个类继承一个类时,还可以实现多个接口。
7.接口可以继承接口,且可以多继承接口extends
A,B。若只用接口方法中的一个或几个,声明一个抽象子类,实现所有方法,继承这个抽象子类调用即可(没有抽象方法的抽象类)
8.
9.内部类访问外部类成员因为内部类存在一个外部类的引用——外部类.this来调用即可
10.抛出多个异常,catch要捕捉处理相应的异常。另外,throws抛出异常类似return一样有结束函数的作用。函数内throw抛出异常对象,函数上一定要用throws声明,否则编译失败。调用声明异常的函数时,要进行throws声明抛出,或者try-catch捕捉,否则编译失效
11.异常的两种分类.
12.异常捕捉处理的三种方式
13.异常的细节
14.创建新的线程和主线程的关系,三个线程CPU在其中随机快速的切换
15.关于栈:栈具有后进先出(LIFO),先进后出(FILO)的特性。
16.线程执行特点,stop()已过时
17.线程是否存在安全隐患的简单判断
18.每个线程中都有同步代码块,做到同步则需一个同步锁对象为同一个,成员变量为堆区指向同一个obj,run()中在栈区,不是同一个对象的引用。
19.线程中有同步代码块和同步函数,后者加同步关键字synchronized声明。开发线程遇到多个锁时,只能用同步代码块 。同步静态函数,会有线程异常,此时对象并不为this。静态同步的锁--类.class