复习{
常用类:
Object: 所有类的父类
常用方法: toString(); 打印对象信息
wait(); 让当前线程进入等待池,
notify(); 让当前线程进入 锁池,去抢锁的标记
notifyAll(); 多线程 用于线程之间的通讯
finalize(); 用垃圾回收 ,服务其他线程线程,一般具有自动基金
生命周期的能力; GC, 守护线程运行在后台,
什么时候结束生命周期不确定,自己任务执行完就可以
clone(); 实现Cloneable 接口,重写clone方法
目的创建当前对象的 副本 ,
equals();
java中创建对象的方式有几种?
1.new Person();
2.clone();
3.反序列化 InputStream : 物理文件-----> 内存的过程 ObjectInputStream
FileInputStream();
new ObjectInputStream(new FileInputStream(new File("路径")));
4.反射 newInstance();
String:
String类是final修饰的类,被称为不可改变类,
每当我们使用一个+ " 拼接 字符串 , 他都会产生一个新的字符串对象
不能被继承
StringBuffer sb = new StringBuffer(); 默认16 线程安全
StringBuiler sb = new StringBuilder(); 线程不安全
ByteBuffer,ShortBuffer,IntBuffer, LongBuffer,FloatBuffer,Double,CharBuffer
nio 非阻塞IO
Buffer 换从
Channel 通道 FileInputStream ips.getChannel()
ByteBuffer bb = ByteBuffer.allocate(1024); 堆内 内存
ByteBuffer.allocateDirect(); 堆外内存
append(); 拼接
reverse(); 字符串反转
insert(); 插入
......
判断HashMap 什么时候扩容;
元素个数 > 容量 * 0.75;
Date: 日期
java.util.Date
java.sql.Date
SimpleDateFormat: 辅助格式化
format(Date date); 返回值 String
parse(String); 返回值Date
Time: 时间
new Time(date.getTime());
Timestamp: 时间戳 年月日 时分秒
new Timestamp(date.getTime());
Arrays: sort(); asList();
Random: 随机数 nextInt(边界值)+偏量值;
Scanner: nextInt(); nextLine(); next();
Math: PI ,abs(), pow(); sqrt(); max() , min();
包装类: Integer, Character, Byte,Short, Long, Float, Double, Boolean
Integer:
valueOf(String str); Integer
parseInt(String str); int "A" NumberFormatException
toBinaryString();
//有缓存区 -128 - 127会存储在这个缓存区中,公用一个内存空间
//所以 == 是 true , 如果超过了-128 ,127 那么就是new Integer == false
Integer a = 127;
Integer b = 127;
System.out.println(a == b); //true
}
-----------------------------------------------------------------
异常:
1. 异常体系:
Throwable: 类
Error:
VirtualMachineError:
StackOverflowError: 栈溢出 方法的相互调用 Stack
OutOfMemoryError: 内存泄露 需要运行的程序没有可用的资源
Exception:
RuntimeException:
|-- ArthmeticException
|-- IndexOutOfBoundsException
|-- ArrayIndexOutOfBoundsException
|-- StringIndexOutofBoundsExcpetion
|-- NullPointerException
|-- NumberFormatException
|-- ClassCastException
|-- IllegalArgumentException
|-- ClassNotFoundException
IOException:
|-- FileNotFoundException
2.处理异常的方式:
|-- 捕获 try...catch(){}
try...catch
try...finally
try...catch...finally
try(
存放需要关闭的资源
){
}catch(){
}finally{
}
finally 一定执行吗?
正常情况下 会执行, 什么情况下不执行, System.exit(0);
在 进入try 块儿前 出现异常
如果在finally 块儿中添加return 关键字会出现什么情况
|-- 覆盖方法返回值
|-- 异常丢失
|-- 抛出
throw new Exception(); 方法上可以加 throws
自定义 异常:
继承Exception
getMessage(); 打印异常名字
printStackTrace(); 打印异常信息,
---------------------------------------------------------------------------------
IO流:
IO:
字节流:
InputStream:
ByteArrayInputStream: 字节数组流
FileInputStream: 文件流
read();
read(byte[] b);
read(byte[] b ,int off, int len);
ObjectInputStream: 对象流 反序列化
readObject();
OutputStream:
ByteArrayOutputStream:
FileOutputStream:
write(int a);
write(byte[] b);
write(byte[] b,int off, int len);
ObjectOutputStream: 序列化
writeObject();
File:
1.学会文件夹的 遍历
2.文件夹的删除
字符流:
Reader:
CharArrayReader
BufferedReader: 字符流的缓冲区
readLine();
InputStreamReader : 字节流转换为字符流的桥
Writer:
CharArrayWriter:
BufferedWriter:
newLine();
flush();
close();
OutputStreamWriter:
PrintWriter 打印流:
append();
println();
print();
write();
NIO:
-----------------------------------------------------------------------------
集合体系:
Iterable: 具有迭代的能力
|-- Collection 接口
|--List: 有序,可重复,允许存储null值 ,
ArrayList: 实现原理是Object[] 对象数组 ,线程不安全
LinkedList: 双向链表实现, 没有下标 get(int index);
Vector: 线程安全
|-- Stack
ArrayList和LinkedList区别:
ArrayList底层是 对象数组实现,必须通过下标来获取元素,所以查询快,添加,删除慢
LinkedList底层是双向链表,没有下标,所以长训慢,添加和 删除 速度快
|--Set:
HashSet: 底层实现是HashMap
TreeSet: 底层实现TreeMap ,有序的Set集合,
想要存储自定义对象 到TreeSet怎么办
|-- 实现Comparable接口 重写compareTo(Object);
|-- 实现Comparator接口 重写compare(Object obj1, Object obj2);
|--Queue: 单向队列 特点:FIFO
|-- Deque: 双向队列
LinkedList: 有四个角色, 双向链表, 栈, 单向队列 , 双向队列
Map:
HashMap: 线程不安全 , 允许存储null值
原理:
当我们向HashMap中存储数据时 put(key, value);
程序会根据key值 计算出hash值 ,会向指定位置存储,如果这个位置没有数据直接存储
如果这个位置有数据,就使用equals方法比较两个 key值是否相等,
如果相等,就替换value值,如果不相等,就以单项链表的形式向下存储
jdk1.7是数组+ 链表
jdk1.8是数组+链表 + 红黑树
如果单项链表的长度 大于 8 就会切换到红黑树
如果红黑树元素个数 小于 6 就会切换会到 链表
哈希冲突,哈希碰撞
Hashtable: 线程安全 , 不允许存储null值
TreeMap: key 有序的 ,跟value值无关,key值不允许存储null值