9.19
1.
静态成员和静态方法(含 static)可以实例化对象进行调用,也可以用 类名. 的形式进行调用
非静态成员和静态方法(不含 static),只能通过实例化对象进行调用。
2.
当子类调用重写的父类方法,要使用 super 关键字
子类调用未重写的父类方法,可以不用super关键字
未被重写的方法可以直接调用
3.== 和 equals 区别:
== :比较引用地址和值
equals: 比较两个引用的值
4.
java Iterator(迭代器)
Iterator不是一个集合,他是一种用于访问集合的方法,可以用于迭代 ArrayList、HashSet等集合。
集合框架:
Iterator Collection(接口) Map(接口)
List(接口) Set(接口) Queue
集合框架主要由 Collectinon和Map两个根接口及其子接口、实现类组成。
Collection的子接口包括 List、set、queue。
Map包括三个实现类,HashMap、Hashtable、LinkedHashMap
5.
ThreadLocal:提供线程局部变量
1.ThreadLocal并没有继承 Thread类,也没有实现 Runnable接口
2.数据独立:ThreadLocal为每一个线程都维护了自己独有的变量拷贝,
每个线程都拥有了自己独立的变量。
ThreadLocal存放的值是线程封闭的,线程间互斥的,主要用于线程内共享
一些数据,避免通过参数来传递
3.在Thread类中有一个Map,用于存储每一个线程的变量的副本。
4.对于多线程资源共享的问题,同步机制采用了“以时间换空间”的方式,而ThreadLocal采用了“以空间换时间”的方式
6. is-a : A is-a B A继承B
has-a : A has-a B B是A的组成部分
like-a: A like-a B B是A的接口
7.修饰符
访问控制修饰符
default: 默认
private: 在同一类可见 不能修饰类(外部类)
public: 对所有类可见
protected: 对同一包内,类和所有子类可见 不能修饰类(外部类)
非访问修饰符
static: 可用来修饰方法和类变量。
final: 被修饰的类不能继承、方法不能被继承重写、变量不可变
abstarct: 用来创=创建抽象方法和抽象类
synchronized: 被修饰的方法同一时间只能被一个线程访问
transient : 用来预处理类和变量的数据类型,java 虚拟机(JVM)跳过该特定的变量
volatile :
8.try catch finally
1.不管又没有出现异常,finally代码块都会执行
2.try 和catch 代码块有return 时,finally仍会执行
如果finally中也含有 reurn ,最后会返回finally中的return 值
9.java 异常:
运行时异常 :不需要程序员处理,JVM帮我们捕获
ClassCastException(类转换异常)
ClassNotFoundException
IndexOutOfBoundsException(数组越界异常)
NullPointerException(空指针异常)
ArrayStoreException(数组存储异常,即数组存储类型不一致)
还有IO操作的BufferOverflowException异常
非运行时异常(检查式异常):
需要程序员手动去捕获或者抛出异常进行显示的处理
10.
方法重写:
1.方法名和参数列表相同
2.返回值或声明异常比父类小
3.访问修饰符权限比父类的大(相同)
方法重载:
1.必须改变参数列表(参数个数或类型顺序不一样)
2.可以改变 返回类型
3.可以改变 访问修饰符
4.可以声明 新的或更广的检查异常
5.能在同一个类中或在一个子类中被重载
6.无法以返回值类型作为重载函数的区分标准
方法重载和重写都是实现多态的方式
区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。
11.构造函数(构造器、构造方法)
1.一种特殊的方法、和类同名,功能主要是完成初始化
2.当类实例化一个对象时会自动调用构造方法,若没有,则调用它的无参构造方法
3.构造方法可以重载,不能被继承,只能显式或隐式的调用
4.不能被 static、final、synchronized、abstract和native修饰
5.接口不允许被实例化,所以接口中没有构造方法。
6.在构造器中,要使用关键字 this,必须放在第一行,否则会编译错误