InputStream 字节输入流
InputStreamReader
InputStream (byte) -> Unicode(char)
Reader 字符输入流
1 打开一个文本文件:
InputStream is = new FileInputStream("gbk.txt");
Reader in = new InputStreamReader(is);
2 打开一个文本文件:
Reader in = new InputStreamReader(
new FileInputStream("gbk.txt"));
//InputStreamReader有一个简化形式就是FileReader。
3 打开一个文本文件:
Reader in = new FileReader("gbk.txt");
4 打开输出文本文件
Writer out = new OutputStreamWriter(
new FileOutputStream("filename"));
5 打开输出文本文件
Writer out = new FileWriter("filename");
//其实打开输出文本文件最常用的不在上面,而是PrintWriter.
文本文件的输出:
PrintWriter out =
new PrintWtirer(new FileWriter(filename));
//而且在这个类上定义了一个特别方便的方法。println。它定义了无数的重载的print和println方法。
out.println("HI");
//其实我们天天用的这个就是一个输出流。
System.out.println("Hello");
文本文件的读取: BufferedReader,方法:readline();
//Stream中的read是按照字节读取,Reader的read是按照字符读取。
阻塞式IO
等待用户的输入完成再继续运行程序的现象叫: 阻塞式IO
BufferedReader: readLine()
Scanner: next() nextLine() nextInt() ...
总结 :在日常生活中,最常用的读取文本文件的BufferedReader,写入最常用的是PrintWriter
BufferedReader bufferedReader = new BufferedReader(
new FileReader("questions.txt"));
PrintWriter out =
new PrintWtirer(new FileWriter(filename));
这两个类的使用参看PrintWriteDemo.java和ReaderDemo.java
//FileReader是InputStreamReader的简化形式。
//FileWriter是OutStreamWriter的简化形式。
对象序列化
int -> 4个byte,流
long -> 8个byte, 流
String 5个字符 -> GBK编码 10个Byte流
Object -> n个byte流
1 ObjectOutputStream 和 ObjectInputStream
writeObject(obj) 和 readObject()
ByteArrayOutputStream outputStream = new
ByteArrayOutputStream();
把数据写入到内存中,在内存中以byte数组的形式存储。
javabean中的一个重要规定,只有实现了序列化,才能保证我们的对象随时写到一个
内存中或者流中。implements Serializable
二维数组
1 声明:
int[][] ary;
2 初始化
静态初始化:
int[][] ary = {{2,3},{4,5},{6,7,8}};
动态初始化:
int[][] ary = new int[3][2];//3行2列
int[][] ary = new int[3][];
int[][] ary = new int[][]{{2,3},{4,5},{6,7,8}};
二维数组:是数组的数组, 数组变量是一个对象数组的引用, 每个
行是一个一维数组的实例.
int[] a = ary[0];//只把第一维数组给它。
Object[] o = ary;
int[][] ary = {{2,3},{4,5},{6,7}};
int[] sum = new int[ary[0].length];
int[] sum2 = ary[0];
for (int i = 0; i < ary.length; i++) {
for (int j = 0; j < ary[i].length; j++) {
System.out.println(ary[i][j]);
}
}
System.out.println("===========");
for (int i = 0; i < sum.length; i++) {
System.out.println(sum[i]);
}
System.out.println("===========");
for (int i = 0; i < sum2.length; i++) {
System.out.println(sum2[i]);
}
//System.out.println(Arrays.toString(sum));
程序, 进程 和 线程
程序: 没有执行的指令序列和相关的数据的集合(如: qq.exe)
如: 磁盘上的可执行命令.
进程: 正在执行的程序, 进程占用资源(CPU, Memoary, IO)
线程: 是进程中并发运行的过程(共享进程资源)
//所有的程序在计算机内部都是走走停停
同步: 步调一致的顺序执行, 如:上公交车, 一个一个上车
异步: 步调不一致的同时执行, 如: 大家一起上卡车
线程: 名词->类
Thread 类中包含一个方法 run() 这个方法就是独立运行的
过程
Thread 类 中还包含方法start() 用来启动独立运行的run()
创建并启动一个线程:
1 要覆盖(匿名类、内部类、普通类均可)Thread类的run() 方法, 提供独立运行的过程
2 调用Thread实例的start() 方法启动 run() 过程.
如果调用的t2.run()那么这就是一个普通的方法,与线程无关,只有t2.start()才会
启动线程。
线程在cpu那里就是你执行一会我执行一会,也就是时间片你有一会我也有一会,不过
同一时间只能执行一个。
线程的状态:
[新建 new] --> [可运行(Runnable)] <--> [运行态(Running)]
所以系统中的线程大多数存在于Runnable,而只有一个处于Running。
而系统让大家都执行一小会,宏观来看,大家都在执行。
软件执行时候至少包含main线程
InputStreamReader
InputStream (byte) -> Unicode(char)
Reader 字符输入流
1 打开一个文本文件:
InputStream is = new FileInputStream("gbk.txt");
Reader in = new InputStreamReader(is);
2 打开一个文本文件:
Reader in = new InputStreamReader(
new FileInputStream("gbk.txt"));
//InputStreamReader有一个简化形式就是FileReader。
3 打开一个文本文件:
Reader in = new FileReader("gbk.txt");
4 打开输出文本文件
Writer out = new OutputStreamWriter(
new FileOutputStream("filename"));
5 打开输出文本文件
Writer out = new FileWriter("filename");
//其实打开输出文本文件最常用的不在上面,而是PrintWriter.
文本文件的输出:
PrintWriter out =
new PrintWtirer(new FileWriter(filename));
//而且在这个类上定义了一个特别方便的方法。println。它定义了无数的重载的print和println方法。
out.println("HI");
//其实我们天天用的这个就是一个输出流。
System.out.println("Hello");
文本文件的读取: BufferedReader,方法:readline();
//Stream中的read是按照字节读取,Reader的read是按照字符读取。
阻塞式IO
等待用户的输入完成再继续运行程序的现象叫: 阻塞式IO
BufferedReader: readLine()
Scanner: next() nextLine() nextInt() ...
总结 :在日常生活中,最常用的读取文本文件的BufferedReader,写入最常用的是PrintWriter
BufferedReader bufferedReader = new BufferedReader(
new FileReader("questions.txt"));
PrintWriter out =
new PrintWtirer(new FileWriter(filename));
这两个类的使用参看PrintWriteDemo.java和ReaderDemo.java
//FileReader是InputStreamReader的简化形式。
//FileWriter是OutStreamWriter的简化形式。
对象序列化
int -> 4个byte,流
long -> 8个byte, 流
String 5个字符 -> GBK编码 10个Byte流
Object -> n个byte流
1 ObjectOutputStream 和 ObjectInputStream
writeObject(obj) 和 readObject()
ByteArrayOutputStream outputStream = new
ByteArrayOutputStream();
把数据写入到内存中,在内存中以byte数组的形式存储。
javabean中的一个重要规定,只有实现了序列化,才能保证我们的对象随时写到一个
内存中或者流中。implements Serializable
二维数组
1 声明:
int[][] ary;
2 初始化
静态初始化:
int[][] ary = {{2,3},{4,5},{6,7,8}};
动态初始化:
int[][] ary = new int[3][2];//3行2列
int[][] ary = new int[3][];
int[][] ary = new int[][]{{2,3},{4,5},{6,7,8}};
二维数组:是数组的数组, 数组变量是一个对象数组的引用, 每个
行是一个一维数组的实例.
int[] a = ary[0];//只把第一维数组给它。
Object[] o = ary;
int[][] ary = {{2,3},{4,5},{6,7}};
int[] sum = new int[ary[0].length];
int[] sum2 = ary[0];
for (int i = 0; i < ary.length; i++) {
for (int j = 0; j < ary[i].length; j++) {
System.out.println(ary[i][j]);
}
}
System.out.println("===========");
for (int i = 0; i < sum.length; i++) {
System.out.println(sum[i]);
}
System.out.println("===========");
for (int i = 0; i < sum2.length; i++) {
System.out.println(sum2[i]);
}
//System.out.println(Arrays.toString(sum));
程序, 进程 和 线程
程序: 没有执行的指令序列和相关的数据的集合(如: qq.exe)
如: 磁盘上的可执行命令.
进程: 正在执行的程序, 进程占用资源(CPU, Memoary, IO)
线程: 是进程中并发运行的过程(共享进程资源)
//所有的程序在计算机内部都是走走停停
同步: 步调一致的顺序执行, 如:上公交车, 一个一个上车
异步: 步调不一致的同时执行, 如: 大家一起上卡车
线程: 名词->类
Thread 类中包含一个方法 run() 这个方法就是独立运行的
过程
Thread 类 中还包含方法start() 用来启动独立运行的run()
创建并启动一个线程:
1 要覆盖(匿名类、内部类、普通类均可)Thread类的run() 方法, 提供独立运行的过程
2 调用Thread实例的start() 方法启动 run() 过程.
如果调用的t2.run()那么这就是一个普通的方法,与线程无关,只有t2.start()才会
启动线程。
线程在cpu那里就是你执行一会我执行一会,也就是时间片你有一会我也有一会,不过
同一时间只能执行一个。
线程的状态:
[新建 new] --> [可运行(Runnable)] <--> [运行态(Running)]
所以系统中的线程大多数存在于Runnable,而只有一个处于Running。
而系统让大家都执行一小会,宏观来看,大家都在执行。
软件执行时候至少包含main线程