1.对象回收机制
当对象创建后引用,将为可达状态,如果没有引用,直接到可恢复状态,等到系统回收时还没有引用的话,将为不可达状态,并且不能重新引用。
强制垃圾回收
finalize();
System.gc;
Runtime.getRuntime().gc();
2.修饰符的适用范围
当没有修饰符时,默认包访问控制符,常见的时初始化块的,因为他没修饰符所有默认包访问控制符
3.System类
当用户想获取平台属性和调用平台命令来完成特定功能时,可以用System类。
System类提供了标准输入,标准输出和错误输出的类变量。
System.in:标准输入
System.out:标准输出
System.err:错误输出流
4.Object类
Object类是所有类的父类,何一个类时候如果没有明确的继承一个父类的话,那么它就是Object的子类;
toString():返回该对象的字符串·表示。
finalize():该方法用于释放资源。因为无法确定该方法什么时候被调用,很少使用。
equals():比较对象的内容是否相等。
hashCode():该方法用于哈希查找,重写了equals方法一般都要重写hashCode方法。这个方法在一些具有哈希功能的Collection中用到。
5.java集合
集合类主要有两个接口派生而出,分别时Collection和Map,下面为Collection的继承树:
Collection:标准的集合,定义了一些通用的方法。
List:有索引,精准操作元素。元素有序,存储及取出时顺序一致。
ArrayList:List的扩展,不过是以数组的方式存储的。查询快,增删慢,主要用于查询遍历数据,为最常用集合之一。
LinkedList:List的扩展,不过是以双向链表的方式存储的。查询慢,增删快。
Vector:ArrayList类似,区别在于线程安全,基本不常用。
Set:没有索引,因此不能使用普通For循环遍历。元素不可重复。
HashSet:Set的扩展,以哈希数组的形式存储。查询快,元素无序,元素不可重复,没有索。
LinkedHashSet:以哈希链表的形式存储。查询快,元素有序,元素不可重复,没有索引。
TreeSet:查询快,元素有序,元素不可重复,没有索引。
Map的继承树:
Map:元素包含两个值(key,value)即键值对, key不允许重复,value可以重复, key与value是一一对应的。元素无序;
HashMap:以原来基础以哈希数组存储。查询快,元素无序,key不允许重复但可以为null,value可以重复。
LinkedHashMap:以原来基础以哈希链表表存储查询快,元素有序,key不允许重复但可以为null,value可以重复。
HashTable:查询快,元素无序,key不允许重复并且不可以为null,value可以重复。基本不常用,线程安全。
TreeMap:查询快,元素有序,key不允许重复并且不可以为null,value可以重复。和treeSet类似。
6.泛式
泛式将对象的类型活用了起来。
本质:参数化类型,把类型作为参数传递
常见形式:泛型类。泛型接口 泛型接口
语法: <T,…>T称为类型占位符 表示一种引用类型 (E , K ,V)
好处:
提高代码的重用性
防止类型转换异常,提高代码的安全性
泛型类
public class Ss<T>{//使用了泛型T
T a;
public void init(T t){//以T作为方法的变量
a=t;
}
public T init2()//以t作为方法的返回值
{
return a;
}
}
public class Demo{
public static void main(String args[]){
Ss<String> s=new Ss<String>(); //后面的可以省略
s.a="你好"
System.out.println(s.init2);
}
}
7.异常处理
java异常的继承体系
捕获异常
try{
//有可能出现异常的语句;
}catch (异常类型 异常对象) {
//可以有多个
}
finally {
//异常的出口
}
try 代码块中放的是可能出现异常的代码.
catch 代码块中放的是出现异常后的处理行为.//可以有多个
finally 代码块中的代码用于处理善后回收工作, 会在最后执行.
其中 catch 和 finally 都可以根据情况选择加或者不加.
执行方式为先执行try,通过try后执行catch如果第一个生效后面的不会再执行。不通过执行finally
抛出异常。
除了 Java 内置的类会抛出一些异常之外, 程序猿也可以手动抛出某个异常. 使用 throw 关键字完成这个操作。
通过throw这个关键字,我们可以手动抛出异常,这个异常可以是Java本来就定义好的,也可以是我们自己定义的异常类;可以通过try…catch来捕获我们抛出的异常,这样后续代码的执行就不受影响,如果不捕获那就会交由JVM来处理,程序也就终止了。
抛出语法格式: throw ExceptionInstance;
异常就是指程序运行时出现错误时通知调用者的一种机制;
自定义异常通常会继承自Exception或者 RuntimeException;
继承自Exception默认是受查异常需要显式处理,继承自 RuntimeException默认是非受查异常不需要显式处理。