途中、感受
泛型
List<Object> list1;
List<String> list2;
list1 与 list2 属于并列关系,而子父类关系。
泛型通配符
List<? extends Xxx> extends 相当于 <= ,可以放Xxx及其子类
List<? super Xxx> super 相当于 >= ,可以放Xxx及其父类
字符流
FileReader 使用 char[] 读取
read(char[] c)
InputStreamReader、OutputStreamWriter属于字符流,也使用 char[] 读取
字节流
FileInputStream 使用byte[] 读取
is.read(byte[] b)
缓冲流
- flush() 当缓存达到最大时,会自动flush()
- readLine() 一行一行读
- 关闭外层缓冲流时,会自动关闭内层流,所以内层流的关闭可以省略。
标准输入、输出流
标准输入流: System.in
BufferedReader br = null;
try {
InputStreamReader is = new InputStreamReader(System.in); // 字符流对象
br = new BufferedReader(is);
while (true) {
System.out.println("请输入:");
String data = br.readLine(); // 一行一行读
if ("e".equalsIgnoreCase(data) || "exit".equalsIgnoreCase(data)) {
System.out.println("程序结束");
break;
}
System.out.println(data);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
输出流:System.out
序列化
- ObjectInputStream、ObjectOutputStream将对象序列化为跟平台无关的二进制流。
- 需要进行序列化的对象需要实现Serializable接口,且对象的每个属性是可序列化的(实现了Serializable接口,基本数据类型都是可序列化的)
- ObjectInputStream、ObjectOutputStream 不能序列化 static transient修饰的变量。