java核心类库(下)
2020-06-21 本文已影响0人
极速魔法
java核心类库(下)
Throwable
Error
Expection
- RuntimeExpection,非检测性异常
1.ArthiMathicException
2.ClassClastException
3.NullPoniterException
4.ArrayIndexOutofBoundsException
5.NumberFormatException e.g. Integer.parseInt(“123a”) - IOExpection 和其它异常,统称其它异常
自定义异常
package com.lagou.task16;
public class AgeException extends Exception {
static final long serialVersionUID = 7818375828146090155L; // 序列化的版本号 与序列化操作有关系
public AgeException() {
}
public AgeException(String message) {
super(message);
}
}
throws
子类重写的方法 不能抛出更大的异常,不包括平级异常(子类重写的方法可以不抛出异常)
父类不抛出异常子类重写方法 里面用try catch 处理。
File
File f = new File(“d:/a.txt”)
f.exists()
f.getName()
createNewFile()
delete() // 删除文件或删除目录,删除一层空目录
listFiles(FileFilter fileFilter) // fileFilter接口
IO流
节点流 直接和流关联的
处理流 建立在节点流基础上的流
imageFileReader
int read() // 读取单个字节,返回读取的字符 int 表示 (char) 强转
int read(char[] cbuf,int offset,int length) // The number of characters read
FileInputStream
available() //获取读取的文件大小 字节为单位
DataOutPutStream/DataInputStream
基本数据类型写入/读取 输出流
序列化
对象需要存储的信息有效组织成字节序列的转化过程
版本号 反序列化 jvm会把传来的字节流中的serialVersionUID 与本地 实体类的serialVersionUID比较。
transient
修饰的成员变量不被序列化
Thread
线程的生命周期
imageThread.currentThread() // 获取当前正在执行的线程
Thread.sleep() // 重写父类Thread 的run() 方法不抛出异常,父类中没有抛出异常,子类重写不能抛出更大的异常
getPriority() // 最大优先级 10 ,normal 5 优先级高的线程不一定先执行,获取到时间片机会更多
子线程启动之前设置为守护线程
子线程设为/守护线程/,主线程结束,子线程也随之结束
synchronized 方法 等价 synchronized(this){ } ,this指代 target
synchronized static 等价于 synchronized(xx.class) { }
- 同步块对同一个锁对象引用
- 减少同步范围提高并发效率
当前线程进入wait() 阻塞状态,自动释放锁,要求在锁定的代码中调用
Callable
- implements Callable 重写 call()方法,
ThreadCallableTest tct = new ThreadCallableTest();
FutureTask ft = new FutureTask(tct);
Thread t1 = new Thread(ft); // 实例化Thread
t1.start();
ft.get() // 获取返回值
反射
运行阶段创建对象并调用方法
Class类是描述类和接口的信息,也就是一种数据类型,Class实例由java虚拟机和类加载器自动构造完成,本质是加载到内存中的运行时类。
获取Class对象
1.数据类型.class
2.对象.getClass()
3.包装类.TYPE // 获取基本数据类型
4.forName() // Class.forName(“java.lang.String”),要求完全限定名包名.类名,不能获取基本数据类型
5.类加载器,
ClassLoader class = ClassTest.class.getClassLoader();
Class c = class.loadClass("java.lang.String");
Constructor
Class c1
Constructor constructor =
c1.getConstructor(String.class,int.class); // 有参数构造方法
constructor.newInstance("zhangfei",30); // 调用构造方法
getModifiers() //构造方法访问修饰符
getName() // 构造方法名称
getParameterTypes() // 构造方法参数类型
Field
/*
1. 获取Class对象
2. 获取有参数构造方法
3. 有参构造得到实例对象
4. 根据Class对象获取对应成员变量信息
4. 根据Class对象获取对应成员变量信息
*/
// 1. 获取Class对象
Class c1 = Class.forName("xxx.Person");
//2. 获取有参数构造方法
Constructor cs = c1.getConstructor(String.class,int.class);
//3. 有参构造得到实例对象
Object object = cs.newInstance("zhangfei",30);
// private String name 成员变量,传入成员变量名称
Field field = c1.getDeclaredField("name");
field.get(object);
// 修改
field.set(object,"guanyu");
Method
// 1.获取Class对象
Class c1 = Class.forName("xxx.Person");
//2. 获取有参数构造方法
Constructor cs = c1.getConstructor(String.class,int.class);
//3. 有参构造得到实例对象
Object object = cs.newInstance("zhangfei",30);
//4.Class对象获取对应的成员方法
Method method = c1.getMethod("getName");
// 5.调用方法 。表示object对象调用 method方法,也就是调用 getName方法
method.invoke(object);
getModifiers()
getReturnType() //返回值类型
getName() //方法名称
getParameterTypes() // 成员方法参数类型
getExceptionTypes() // 异常类型