1.异常处理:
1. throws和throw关键字:
a) throws抛出异常,在方法中不处理任何的异常,而交给被调用处
b) throw人为抛出一个异常对象
c) 问:try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 答: 因为讲过遇到return关键字就是返回函数调用处,但是finally语句是一定要执行的.所以是先执行finally然后再执行return语句;
d) 自定义异常类看: http://agan007.iteye.com/blog/1072705
2. java io相关知识:
RandomAccessFile类:
随机读取, public void seek();单位是字节
和public int skipBytes(int n)起控制作用, 为了移动存取位置时的方便,通常在随机存取文件中会固定每一个数据的长度;
InputStream和OutputStream:
①FileInputStream和FileOutputStream常用方法:
public int read()
public int read(byte[] b)
public int read(byte[] b, int off, int len)
new FileOutputStream(File file, boolean append),是否追加,其中/r/n是换行
public void write(byte[] b)
public void write(byte[] b, int off, int len)
②BufferedInputStream和BufferedOutputStream:
BufferedInputStream是InputStream->FilterInputStream的子类
BufferedOutputStream是OutputStream->FilterOutputStream的子类
实际最后实现的InputStream和OutputStream实例,多了一个buf数据成员,减少硬盘存取次数.提高效率.为了缓冲区数据一定被写至目的地,建议最后执行flush();
③DataInputStream和DataOutputStream:
DataInputStream是InputStream->FilterInputStream的子类
DataOutputStream是OutputStream->FilterOutputStream的子类
对java基本数据类型写入的方法,像int、double和boolean等的方法
④ObjectInputStream和ObjectOutputStream:
直接将内存中整个对象存储至文件,
⑤: SequenceInputStream:
文件分割合并上好用
⑥: PrintStream
打印流,是OutputStream->FilterOutputStream的子类,可以自动进行字符转换的动作,默认会使用操作系统的编码来处理对应的字符转换动作,使用打印流输入最为方便,建议以后在输出的时候就使用打印流,jdk 1.5之后对print()方法更新,加入了格式化操作printf(),和C语言一样好像过时了.一般用PrintWrite
⑦ByteArrayInputStream和ByteArrayOutputStream:
内存流, 流的来源或目的不是文件是内存空间
⑧PushbackInputStream:
没有实际应用过
⑨PipedInputStream:管道流
Reader和Writer:
① InputStreamReader和OutputStreamWriter
对InputStream和OutputStream进行字符处理,字符和字节流之间的转换
②FileReader和FileWriter
FileReader是Reader->InputStreamReader的子类
FileWriter是Writer ->OutputStreamWriter-的子类
FileInputStream 类以二进制输入 / 输出, I/O 速度快且效率高,但是它的 read ()方法读到的是一个字节,很不利于人们阅读。 而 FileReader 类弥补了这个缺陷,可以以文本格式输入/ 输出,非常方便;比如可以使用 while((ch = filereader.read())!=-1 ) 循环来读取文件;
③BufferedReader和BufferedWriter
④PrintWriter
同样是打印流,同PrintStream不同的是PrintWriter还可以接受Writer对象作为输出的对象
⑤CharArrayReader和CharArrayWriter
⑥PushbackReader
ps:记这些概念和容易晕的.好的方法是多敲几次代码,就记住了…
3. java多线程
实现方式:
a) 通过继承Thread类或者实现Runnable接口.首选实现接口 ,本身Thread也实现了Runnable接口,继承Thread多个线程间不能实现资源的共享,而实现Runnable接口之后可以实现多个线程之间资源的共享;
b) start()和run()启动线程效果不同,run()是等一个线程执行完了再继续执行其它线程,start()是同时; Runnable接口没有start(),但是通过Thread类Thread(Runnable target)调用start();
c) 线程的状态:初始化,等待,执行,停止,卸载;线程的操作方法;线程的命名和取得
d) 线程休眠:public static void sleep(long millis)throws InterruptedException;线程优先级:public void sset Priority (int new Priority)
e) 线程同步:synchronized关键字的使用(当多个线程同时进行同一资源的操作,为了保证操作的完整性);死锁是(过多的同步操作,产生了死锁)
f) Object 类对线程的支持:notify(),wait(),notifyAll()
4. java类集:
保存单个值的集合(collection):
a) List:允许有重复的元素
i. ArrayList:异步处理,新的类,只能用Iterator输出
ii. Vector:同步处理,旧的类,能用Iterator和Enumeration同时输出
b) Set :不允许有重复的元素
i. HashSet:散列,无序
ii. TreeSet:有序,按Comparable排序
保存一对值(Map):
a) HashMap:异步处理,新的类
b) HashTable:同步处理,旧的类
c) TreeMap:按KEY进行排序的集合
输出:
a)Iterator:新的输出类,遇到输出肯定用Iterator
b)Enumeration:旧的输出类