一、TreeMap
TreeMap map = new TreeMap();
map.put("ff", new Date());
map.put("aa", new Object());
map.put("dd", new User());
Set<Entry> set = map.entrySet();
for(Entry entry:set) {
System.out.println(entry.getKey()+",,"+entry.getValue());
}
二、异常

三、处理异常的方式
1、方法 throws 异常名
2、try...catch...
方法声明时有异常,调用就需要处理
程序不发生问题,只执行try中的内容
程序发生问题,该语句在try中的后续语句都不会执行,catch中的执行
问题处理好,try、catch后的语句会正常执行
问题处理不好,try、catch后的语句不会执行
一个try可以接多个catch,会从上到下依次找合适的异常类型,然后进入catch块,建议最后有个Exception兜底
用多个catch接收异常时,父异常不能位于子异常上边
四、异常堆栈信息
e.printStackTrace();
五、finally
finally不管上边try、catch执行如何,都执行,一般用于资源释放(除非系统退出,比如System.exit(),此时finally不执行)
六、手动抛出异常
throws和throw的区别
throws是处理异常的一种方式,一般写在方法声明的位置
throw是触发异常事件的推手,与异常对象连用,作为语句,写在方法内部
七、自定义异常
public class MyException extends Exception {
public MyException(String message) {
super(message);
}
}
八、多线程
单核cpu,假的应用程序“同时”进行,程序互相切换,切换时间较短,让人以为应用程序“同时”进行,并发
多核cpu,真的应用程序同时进行,并行
进程:正在执行的应用程序
线程:进程中有各自独立的任务,一个任务就是一个线程
每个程序都有两个线程,其中主方法就是一个线程,另一个是垃圾回收机制
finalize
九、自定义线程
Thread
Runnable
1、继承Thread类或实现Runnable接口
2、重写run方法
3、调用start方法,启动线程

网友评论