异常处理 try cathc finally Exception表示检查异常 RuntimeException运行时异常 thow抛出异常 thows声明异常
如果父类声明了异常 子类重写父类声明异常 不能比父类的异常多 也不能大余父类异常的声明
常用类 : System类 系统类 常用方法: currentTimeMillis()返回以毫秒为单位的时间
exit(int status) 终止当前正在运行的JAVA虚拟机 getProperties()确定当前的属性
getProperty(String key)获得指定键指示的系统属性 nanoTime()返回最准确的可用系统计时器的当前值,以毫秒为单位
gc() 运行垃圾回收器
Runtime类 代表JAVA运行环境 String类 字符串不可更改 StringBuffer类 可更改字符串 用toString转换为String类
StringBuilder 类 大致和StringBuffer一样 但运行速度快 安全性不高
Date类 时间类(已过时) Calendar类GregorianCalendar类 时间类 改良版 Calendar是一个抽象类
Math 数学类
反射 类加载 垃圾回收
类加载分为三部 加载————链接——————初始化
加载 :加载过程(3部)完成后得到class对象 根加载 自己编制的程序 扩展加载 JAVAX.* JAR包 加载扩展类文件 系统加载 加载不需要new的系统类
链接: 验证:结构是否正确 是否和其他类保持一致 准备:为静态属性分配内存 设置初始值 解析:将类的二进制书记中的符号替换为直接引用
初始化 : 验证是否被加载 链接 若没有 就加载 链接 验证该类的父类有没有初始化 若没有便初始化父类 若类中有初始化语句 优先依顺序执行初始化语句
什么时候初始化 类 (接口):
创建类的时候 调用某个类的静态方法 访问或修改某个类的静态属性 反射强制创建这个类的class文件 初始化某个类的子类 直接用java。exe命令运行主类
反射: 在运行期得到 载入 编译时不知道的类 作用:可以装载运行时才能得到的一个类的 属性 成员变量 结构 或者创建对象这些平时对类的操作
反射查看类信息: 编译期不知道类名 运行期能得到类名 用forName()方法得到对象
编译期知道名字 : 直接用属性获得对象(new) 得到了实例对象 : getClass方法返回所属类对应的对象
创建对象 : new 反射 对象克隆 对象反序列化 四种方法
多线程 : 运行一个程序可以叫做一个进程 一个进程有多个线程(各种不同的功能) 线程由CPPU控制 Thread线程类
如何创建 : 继承一个Thread类 Thread子类中重写run方法 创建Therad子类的实例 调用实例上的start方法
实现Runnable接口创建线程 Thread是Runnable的子类 Runnable可以有效分离线程 较好的体现了面向对象的设计 可以避免单继承
同步异步 :同步 有序列的线程排序 用于资源唯一性的时候 (如买票有排列性
异步: 无序的线程运行 资源抢夺分配
死锁: A需要B的运行结果来运行 而B也需要A的运行结果来运行 都不能运行