-
.clone方法,需要实现Cloneable接口
-
.notify方法,实现线程时候需要,将线程唤醒(随机唤醒)不可被重写
.notifyAll方法,全部唤醒 -
重写toString Alt+/ -> toString 重写
-
Object中的wait,是对象的等待,不是线程的wait,wait(timeout)和wait()
-
.finalize方法, 可以被重写,监听作用,对象被销毁时调用
gc 垃圾回收机制
sleep(time) 系统等待time时间 -
静态代理(一个代理只能代理一个类)
所谓静态代理也就是在程序运行前就已经存在代理类的字节码文件(在真正出租房屋之前,就已经做好了相关工作,中介和房屋主人就做好了相关联系),代理类和委托类的关系在运行前就确定了。
1.和被代理对象实现相同的接口
2.在代理类中,需要对被代理对象初始化
3.需要实现和被代理对象相同的方法,并且在这个方法中核心(原始)业务调用被代理对象的,增强的业务在这里进行增强就行了
https://www.cnblogs.com/StanleyBlogs/p/10761604.html -
超级父接口
Collection 和 Map
Collection 主要子接口 List Set
-
ArraysList线程不安全,但速度更快
boolean b = list.add(“12”);//不指定位置添加元素 返回boolean类型
list.add(0, “23”);//指定位置添加元素 没有返回值
//指定位置只能往已经存在的位置或者列表末尾指定
//指定已经存在的位置,原位置及之后的位置顺序后延 -
泛型
泛型只有在调用时才能确定具体的类型
K V E T U S
在类中使用泛型
public class Easy1<T> {
}
规定泛型的继承关系 向上规定是哪一个接口或类的子类
必须用extends 无论是接口还是继承
public <E extends S> E test1(E e) {
// 不能new泛型
return e;
// 对集合中存储的内容进行规范
List<String> list1 = new ArrayList<String>();
// 指定泛型后,集合只能存放指定类型的对象
- 异常
异常-在程序编译或者运行时出现的异常
检查异常–在编码过程中必须处理的异常
Exception的子类(非RuntimeException的子类)全是检查性异常
运行时异常–编码时可以不处理,运行程序时可能会抛出的异常
运行异常是RuntimeException及其下所有子类
程序一旦抛出异常(未处理),程序就会中断
当方法重写时,重写的方法抛出的异常,只能更精确(子类),不能更大(父类)
package com.day9.day902;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class Easy1 {
public static void main(String[] args) {
int a = 12 / 0;
System.out.println("打印字符串");
// 和程序之外的内容打交道,都会抛出检查异常
// 处理异常
// 尝试运行代码--便抛出异常中断程序
try {
File f = new File("d:\\maven.txt");
FileInputStream fis = new FileInputStream(f);
}catch( Exception e) {
// 如果try块中的代码在程序运行过程中,确实抛出了
// FileNotFoundException类型的异常
// 就会执行这个代码块
// 这个代码块需要对出现异常的程序进行一个补救方案
e.printStackTrace();
// System.out.println("程序出错");
}
System.out.println("程序结束");
System.out.println(test());
}
void throwException() throws FileNotFoundException, IOException {
File f = new File("d:\\maven.txt");
FileInputStream fis = new FileInputStream(f);
}
// 捕捉多个异常只会执行一个
// 小异常放在前面捕捉,大异常放在后面。
public static int test() {
File f = new File("d:\\maven.txt");
FileInputStream fis = null;
try {
fis = new FileInputStream(f);
Class.forName("com.easy.Test");
return 1;
}catch( FileNotFoundException e) {
System.out.println("FileNotFoundException");
// e.printStackTrace();
return 2;
}catch(Exception e){
//其他异常会执行此代码
return 3;
}finally {
// 任何异常都会执行此代码
// 此代码块用来关闭资源
if(fis != null) {
try {
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
// e.printStackTrace();
}
return 4;
}
}
}
static boolean find(List list, String str) {
for(Object obj:list) {
// 尝试运行可能抛出异常的代码块,如果抛出异常,
// 就会执行捕获对应的异常类型的代码块catch
// 这样程序就不会因为异常而中断
try {
if(obj.equals(str)) {
return true;
}
}catch(NullPointerException e) {
System.out.println("查找出错");
continue;
}
}
return false;
}
}