try块的使用
try块不能单独使用,它必须带上catch块或者final块一起抛,做题的时候遇到的,平常都是自动抛的。
二维数组建立小问题
float f [][] = new float[][6];
这是java二维数组建立和c二维数组的建立不同之处,Java的二维数组实质上还是一位数组,参数的第一个是一位数组的个数,也就是行数,参数的第二个是一位数组的长度,所以我们可以先不定义一位数组的长度,但不能不定义一位数组的个数。
关于Exception异常类的父类问题
EOFException :文件结束
FileNotFoundException:找不到文件
ArithmeticException: 算术异常,如以零做除数
ClassNotFoundException:不能加载所需的类
NullPointerException:空指针异常
IllegalArgumentException:方法接收到非法参数
ArraylndexOutOfBoundException:数组下标越界
关于java中继承的问题
例题:
a.i = 10;(用的是b.i)
a.j = 17;(super.j = j)
b.i = 10;(循环)
b.j = 0;
额,想不通b.j为什么是零,其他的好说。
i/o流的基础
基本的三种分类
1.输入流和输出流
东西读入内存就是输入流(就是只能读的流);
东西从内存写到记录存储输出流(就是只能写的流);
2.字节流和字符流
字节流: InputStream是所有字节输入流的祖先,而OutputStream是所有字节输出流的祖先。
字符流:Reader是所有读取字符串输入流的祖先,而writer是所有输出字符串输出流的祖先。
上述四种都属于抽象类,不能作为实例直接用。
3.节点流和处理流
节点流:可以从或向一个特定的地方(节点)读写数据。如FileReader.
处理流:是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。如BufferedReader.处理流的构造方法总是要带一个其他的流对象做参数。一个流对象经过其他流的多次包装,称为流的链接。
比较常见的节点流就是文件了。
FileInputStream FileOutputStrean FileReader FileWriter 文件进行处理的节点流。
处理流比较常用缓冲流和转换流。
BufferedInputStrean BufferedOutputStream BufferedReader BufferedWriter
增加缓冲功能,避免频繁读写硬盘。
InputStreamReader OutputStreamReader实现字节流和字符流之间的转换。
再就是i/o流中比较重要的序列化了。
序列化:把对象转换为字节序列的过程称为对象的序列化。
反序列化:把字节序列恢复为对象的过程称为对象的反序列化。
通过实现Serializable接口或Externalizable接口来进行。
我一般是实现Serializable接口,然后保证读和写的类包路径和内容一致,不会每个都加序列号什么的。