* * * * * * * * * * * * * * * * * * * * * * * * * nf * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * nf * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 使用注释 Class c=Class.forName(args[0]); Object o=c.newInstance(); Method[] ms=c.getMethods(); for(Method m:ms){ //判断m方法上有没有Test注释 if (m.isAnnotationPresent(Test.class)){ //得到m之上Test注释parameter属性值 Test t=m.getAnnotation(Test.class); String parameter=t.parameter(); m.invoke(o,parameter); } } 多线程编程 Executor接口 Executors工具类 Executor.execut()方法 使用线程池取代了Thread类 Runnable接口的问题 run()方法不能抛异常 不允许线程返回值 Callable接口 Future接口 并发 锁应该是个对象,从面向对象的角度来说,应该把锁做成一个对象 Lock接口,锁对象接口 对锁对象调用lock方法加锁,调用unlock解锁 同步代码块,用synchronized方式时,当线程1进入代码块还没有出来,线程2要进入代码块时,只能等待,但现在可以用tryLock先试试能不能上锁,再lock就可以了 Condition 条件变量,相当于一个等待队列,一个锁对象能获得多个等待队列 await() signal() sinalAll() ReadWriteLock get方法要加锁吗?以前无法解决,使用此锁可解决此问题 写锁独占,读锁共享 并发的高级同步机制 一些常用的线程协调可以实现,但较麻烦 一些已经实现了的协调类,可以控制并发的数量 Semaphore 信号量 * * * * * * * * * * * * * * * * * * * * * * * * * * * * RandomAccessFile 随机访问文件,只能访问文件 seek(long pos) 定位文件指针 所有的输入流当你调用read方法时,该线程一定会阻塞,等待数据输入 字符流 以字符为单位传输数据 用字节流可否传输字符数据呢? 如果用字节流可以传输字符数据的话,为什么还专门要字符流呢? 字符流能够自动处理字符的编码 字符的编码 计算机是采用二进制来存数据 编码是一个字符所对应的一个数 字符和编码之间必需是一一对应的 把一个字符转换成一个数叫做编码过程,反之称解码过程 字符编码一般都是由那个国家制定的 当编码方式和解码方式不统一的时候,就可能出现乱码问题 英文有乱码吗?为什么? 世界上任何一种编码方式都会向上兼容ASCII编码 一些编码方式 ISO-8859-1 用一个字节编码一个字符 GB2312 国标 2个字节 并没有包含全部的汉字 GBK 对GB2312的一个扩展 2个字节 BIG5 台湾 香港 Unicode 2个字节 全球统一的编码 在网络上传输会增加一倍的网络资源 UTF-8 变长的编码方式 编码的长度不定,可能是1、2、或3个字节(如汉字) GB18030 … 当我们想指定编码向文件中写入字符时,我们就得用字符流了 解决编码问题 手工编码和解码 用字符流处理乱码问题 得到一个字节流 使用桥转换,可指定解码方式 得到一个字符流 Read/Writer BufferedReader/BufferedWriter readLine //程序阻塞,等待输入,直到输入换行符为止 newLine //写出一个换行符 PrintWriter PrintWriter 同样是带缓冲的字符输出流 相对于BufferedWriter,它可以直接用一个字节流构造一个字符流,但需要指定编码方式时,还是得用到桥转换类,但是要注意,直接构造的方法是1.5版本才有的 方法多,有很多重载的print方法 所人的方法都不会抛异常,不需要我们处理异常 我们一般情况下会用这个类,而不会用BufferedWriter StringTokenizer String s="Hello:Wor
达内java教科书ppt_达内Core-Java课件.ppt
最新推荐文章于 2021-03-11 19:03:09 发布