首先:
java基础的基础
1.位运算符 (博客中 位运算的应用)
2.集合的特点(ArrayList,linkedList(双列集合),voter, HashMap,LinkedHashMap)
3.多线程
4.泛型的应用 泛型的特点 泛型的方法
5.static final 静态与常量
6.java的软引用,弱引用,强引用,(垃圾回收机制)
1---详细见博客
二.集合
1.List集合
ArrayList 数组结构,线程不安全,效率高,查询速度快
LinkedList 链表结构,线程不安全,效率高,增删快
vector 数组结构,线程安全,增删,查询都慢,效率低,被ArrayList替代
2.Map集合
HashMap 邮键值对储存形式。可以空(null)值和键,效率高,线程不安全
LinkedHashmap 基于HashMap结构之上,获取顺序与插入顺序一样,也可以通过构造方法设置最近最少使用的次序(LUR)。
ThreeMap 基于红黑树,查看数据时候需要排序
三.多线程
1.线程的基本概念:
多线程操作的最小执行单位,进程中包含多个线程,他们处理不同的任务,组成了一个应用的整个体系结构。
2.实现线程的方式
继承Thread,实现Runnable
区别:实现Runnable接口的扩展性好,因继承只能多继承。
3.线程中各种方法的去别:
sleep会一直拥有锁,但wait方法执行时,会放掉锁。wait通常用于线程之间的交互,sleep用于停止线程。
yield(),线程让步,当一个线程执行yield()方法,证明该线程执行让步,让其他线程有可能的获取资源运行
join方法:加入,当一个线程执行join(),证明该线程执行加入操作,会终止当前正在运行的线程,开始执行join的线程。
4.线程池
是统一管理线程的服务对象。优点是通过控制线程的创建和销毁,节省资源,提高效率。
四.泛型
1.编写的代码可以被不同的对象类型所引用,泛型的本质是参数化类型,所操作的数据类型被指定为一个参数,
泛型有三种:泛型类,泛型引用,泛型接口。
2.类型安全:提高java程序的类型安全,编译时期就可以检查出类型不正确导致的类型转换异常,消除强制类型转换
线程有几种状态:
a、新建状态(new)
b、就绪状态(Runnable)
c、运行状态(Running)
d、阻塞状态(Blocked)
e、死亡状态(Dead)
五.static final静态与常量
1.static 静态的三种表的方式 静态方法,静态变量,静态代码块
静态随着类的加载而加载
静态只能调用静态
静态不能被 引用调用例如(this,supper)
静态方法的调用不依附与实例对象
2.final 常量
final关键字可以用来修饰类、方法和变量(包括成员变量和局部变量)。
final修饰的类不能被继承,重写,
当修饰变量的时候,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。
六,软引用 弱引用 强引用
强引用:
只要引用存在,垃圾回收器永远不会回收
Object obj = new Object();
//可直接通过obj取得对应的对象 如obj.equels(new Object());
而这样 obj对象对后面new Object的一个强引用,只有当obj这个引用被释放之后,对象才会被释放掉,这 也是我们经常所用到的编码形式
软引用:
非必须引用,内存溢出之前进行回收,可以通过以下代码实现
Object obj = new Object();
SoftReference<Object> sf = new SoftReference<Object>(obj);
obj = null;
sf.get();//有时候会返回null
这时候sf是对obj的一个软引用,通过sf.get()方法可以取到这个对象,当然,当这个对象被标记为需要回收的对象时,则返回null;软引用主要用户实现类似缓存的功能,在内存足够的情况下直接通过软引用取值,无需从繁忙的真实来源查询数据,提升速度;当内存不足时,自动删除这部分缓存数据,从真正的来源查询这些数据。
弱引用:
第二次垃圾回收时回收,可以通过如下代码实现
Object obj = new Object();
WeakReference<Object> wf = new WeakReference<Object>(obj);
obj = null;
wf.get();//有时候会返回nullwf.isEnQueued();//返回是否被垃圾回收器标记为即将回收的垃圾弱引用是在第二次垃圾回收时回收,短时间内通过弱引用取对应的数据,可以取到,当执行过第二次垃圾回收时,将返回null。弱引用主要用于监控对象是否已经被垃圾回收器标记为即将回收的垃圾,可以通过弱引用的isEnQueued方法返回对象是否被垃圾回收器标记。