内部类与异常类:
输入、输出流:
- 内部类:一个类中定义另一个类;包含内部类的类为外嵌类
1.内部类可使用外嵌类的成员变量和方法
2.内部类的类体中不可声明类变量和类方法,外嵌类可用内部类声明对象作为外嵌类的成员
3.内部类仅供它的外嵌类使用
4.内部类可以是static类,此时其他类中才可使用此static内部类来创建对象,但static内部类不能操作外嵌类中的实例成员变量,非内部类不可以是static类
5.内部类的字节码名字格式为“外嵌类名内部类名”
- 匿名类:直接使用 new 类名(){ 匿名类的类体 } 或 new 接口名(){ 实现接口的匿名类的类体 }
- 匿名类相当于子类或实现接口的类,一般用匿名类作为一个 子类对象 或 已经实现的接口 当参数传递给方法
- 异常类:
try { 包含可能发生异常的语句 }
catch(ExceptionSubClass1 e) { ... }
catch(ExceptionSubClass2 e) { ... }
finally{ ... }
finally语句可省略,若存在finally则无论在try部分是否发生过异常都会执行finally子语句,除非在finally之前执行了程序退出代码(return语句后仍然会执行finally)
throw用来手动抛出异常
- 断言:当发生某个错误时程序立即停止执行
两种语法格式:
assert boolean语句;
assert boolean语句:"提示消息";
输入、输出流:
- 文件字节输入输出流(以字节byte为单位,以文件file为源)
输入流:FileInputStream继承自InputStream
输出流:FileOutputStream继承自OutputStream
- 文件字符输入输出流(以字符char为单位,以文件file为源)
输入流:FileReader继承自Reader
输出流:FileWriter继承自Writer
- 注:当把读入的数据转换为字符串时,要把实际读入的字节转化为字符串,read()的返回值为实际读入的字节数目,若未读入则返回-1,;使用完输入或输出流要用close()关闭流;对于Writer流,write方法将数据首先写入到缓冲区待到缓冲区溢出时自动写入目的地,关闭流时会立刻将缓冲区的内容写入目的地,也可调用flush()立刻将缓冲区的内容写入目的地。
- 缓冲输入输出流(以字符输入流Reader或字符输出流Writer为源,有更强的读写能力,如:可以按行读取文件)
输入流:BufferedReader
输出流:BufferedWriter,特有方法newLine():向文件写入一个回车符
- 随机流(既能读文件也能写文件)RandomAccessFile。构造时指定只读只写或可读写
- 注:RandomAccessFile流的readLine()方法在读取含有非ASCII字符(如中文)的文件时会出现乱码,需将读取到的字符串重新编码到byte数组中再用当前机器默认编码将该数组转化为字符串,操作如下:String str = in.readLine();byte b[] = str.getBytes("iso-8859-1"); String content = new String(b);
- 数组流
字节数组流:
字节数组输入流ByteArrayInputStream和字节数组输出流ByteArrayOutputStream
字符数组流:
字符数组输入流CharArrayReader和字符数组输出流CharArrayWriter
- 数据流
数据输入流DataInputStream(Input Stream in)和数据输出流DataOutputStream(OutputStream out)
- 对象输入输出流(以InputStream或OutputStream为源进行构造)
输入流:ObjectInputStream继承自InputStream,使用readObject()读取一个对象到程序中
输出流:ObjectOutputStream继承自OutputStream,使用writeObject(Object obj)将一个对象写入一个文件
- 文件锁
FileLock和FileChannel,使用方法如下:
RandomAccessFile input = new RandomAccessFile("test.java","rw");
FileChannel channel = input.getChannel();
FileLock lock = channel.tryLock();//加锁
lock.release();//释放锁

被折叠的 条评论
为什么被折叠?



