第九章 枚举类和注解
一、枚举类
1.如何自定义枚举类 枚举类:类的对象是有限个的,确定的
1.1私有化类的构造器,保证不能在类的外部创建其对象
1.2在类的内部创建枚举类的实例,声明为:public static final
1.3若类有属性,那么属性声明为:private final 。此属性在构造器中赋值
2.使用enum关键字定义枚举类
2.1其中常用的方法:value() valueOf(String name);
2.2枚举类如何实现接口:①让类实现此接口,类的对象共享同一套接口的抽象方法的实现
②让类的每一个对象都去实现接口的抽象方法,进而通过类的对象调用被重写的抽象方法时,执行的效果不同
二、注解Annotation
1.Jdk提供的常用的三个注解
@Override:限定重写父类方法,该注释只能用于方法
@Deprecated:用于表示某个程序元素(类、方法等)已过时
@SuppressWarning:抑制编译器警告
2.自定义注解
以SuppressWarning为例进行创建即可
3.元注解(了解):可以对已有的注解进行解释说明
Retention
Target
Documented
Inherited
第十章 IO流
1.java.io包下
File类:java程序中的此类的一个对象,就对应着硬盘中的一个文件或网络中的一个资源
File file1 = new File(*d:\\io\\helloworld.txt*);
File file2 = new File(*d:\\io\\io1*);
File既可以表示一个文件,也可以表示一个文件目录
File类的对象是与平台无关的
File类针对文件或文件目录,只能进行新建、删除、重命名、上层目录等等的操作,如涉及到访问文件内容,File是无能为力的,只能使用IO流下提供的相应的输入输出流来实现
常把File类的对象作为形参传递给相应的输入输出流的构造器中
2.IO流结构
3.IO流的划分
①按照流的流向的不同:输入流 输出流 (站位于程序的角度)
②按照流中的数据单位的不同:字节流 字符流(纯文本文件使用字符流,除此之外使用字节流)
③按照流的角色的不同:节点流 处理流(流直接作用于文件上的是节点流,除此之外都是处理流)
4.重点
抽象基类
InputStream OutputStream Reader Writer
节点流(文件流)
FileInputStream (int read(byte[] b) FileOutputStream (void writer(b,0,len)) FileReader (int read(char[] c) FileWriter (void writer(c,0,len))
缓冲流(处理流的一种,可提升文件操作速率)
BufferedInputStream (int read(byte[] b)
BufferedOutputStream (flush()) (void writer(b,0,len))
BufferedReader (readLine()) (int read(char[] c)或String readLine()
BufferedWriter (flush()) (void writer(c,0,len)) 或(void writer(String str))
注:1.从硬盘中读入一个文件,要求此文件一定存在,若不存在,报FileNotFoundException的异常
2.从程序中输出一个文件到硬盘,此文件可以不存在,若不存在,就创建一个实现输出,若存在,就将其覆盖
3.真正开发时,就使用缓冲流来代替节点流
4注意最后要关闭相应的流,先关闭输出流,再关闭输入流。就此操作放入finally.
5.其他的流
①转换流;实现字节流与字符流之间的转换
InputStreamReader:输入时,实现字节流到字符流的转换,提高操作的效率(前提是数据是文本文件) 解码:字节数据--->字符串
OutputStreamWriter:输出时,实现字符流到字节流的转换。 解码:字符串--->字节数据
②System.in:标准输入流 从键盘输入数据
System.out:标准输出流 从显示器输出数据
③打印流 (都是输出流)PrintStream(处理字节) PrintWrite(处理字符)
可以使用System.setOut(PrintStream p)重新设置一下输出位置
PrintStream p = new PrintStream(new FileOutputStream("hello.txt"),true);
④数据流(处理基本数据类型、String类、字节数组)
DataInputStream DataOutputStream
⑤对象流(用来处理对象)
对象的序列化机制:允许把内存中的java对象转换成平台无关的二进制流,从而允许把这种二进制流持久的保存在磁盘上或通过网络将这种二进制流传输到另一个网络节点,当其他
程序获取了这种二进制流,就可以恢复成原来的java对象
ObjectInputStream(Object readObject();) ObjectOutputStream(void writeObject(Object obj))
如何创建流的对象:ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File("person.txt")))
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(new File("person.txt")))
⑥随机存取文件流:RandomAccessFile
既可以充当一个输入流,又可以充当一个输出流:public RandomAccessFile(File file,String mode)
支持从文件的开头读取、写入,若输出的文件不存在,直接创建,若存在,则是对原有文件内容的覆盖
支持任意位置的“插入”。
本文出自 “阿成的博客” 博客,转载请与作者联系!